ASP.NET Core 1.0: API的輸入參數

Web API是需要接受參數的,譬如,通常用於創建數據的POST method需要接受輸入數據,而用於GET method也需要接受一些可選參數,譬如:爲了性能起見,控制返回數據的數量是至關重要的。

首先來看輸入參數的幾種形式:

  • /api1/{parameter1}/{parameter2}/…/{parametern}
  • /api1&{parameter1}=xxx&{parameter2}=xxx&…&{parametern}=xxx
  • /api1: 輸入內容在Body中

有了以上理解,再來看ASP.NET Core 1.0如何實現。

  • 針對第一種輸入參數,實現方法是在對應的Controller中添加如下的屬性
[Route("api/[controller]")]
public class ValueController : Controller
{
    [HttpGet("{parameter1}\{parameter2}")]
    public IEnumerable<String> Get(String parameter1, String parameter2)
    {
    // Do the job!
    }
...
}
  • 針對第二種輸入參數(其實是可選參數),實現方法類似,只是不需要再HttpGet的屬性中指定Route:
[Route("api/[controller]")]
public class ValueController : Controller
{
    [HttpGet()]
    public IEnumerable<String> Get(Int32? parameter1 = null, String parameter2 = "")
    {
    // Do the job!
    }
...
}
  • 針對第三種輸入參數,實現方法是通過FromBody的屬性:
[Route("api/[controller]")]
public class ValueController : Controller
{
    [HttpPost]
    public IActionResult Post([FromBody]String cont)
    {
    // Do the job!
    }
...
}

既然提到了FromBody屬性,那麼索性介紹一下另外一個FromUri。以下示例來自於ASP.NET官方文檔

一個簡單的FromUri使用場景:

public class GeoPoint
{
    public double Latitude { get; set; } 
    public double Longitude { get; set; }
}

public ValuesController : ApiController
{
    public HttpResponseMessage Get([FromUri] GeoPoint location) { ... }
}

是爲之記。
Alva Chien
2016.6.24

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章