ASP.NET Core Web API 入門教學 - From之常用來源標籤功能用法介紹


Posted by TalllKai on 2021-04-28

影片講解(有字幕):


上一章我們用到了[FromQuery],那這篇就要來介紹幾個常用的情境。

public IActionResult Get([FromQuery] TodoSelectParameter value)
{
}

首先先介紹基本功能:
[FromBody]:要求本文
[FromForm]:要求本文中的表單資料
[FromHeader]:要求標頭
[FromQuery]:要求查詢字串參數
[FromRoute]:來自目前要求的路由資料
[FromServices]:作為動作參數插入的要求服務

那我們API這邊會比較常用到的是[FromBody]、[FromForm]、[FromQuery]、[FromRoute]。

那為什麼要用?什麼時候要用呢?

其實大多數的情況都不需要加,因為會有個預設值。譬如
情境一:

public IActionResult Get(string id)
{
}
public IActionResult Get([FromQuery]string id)
{
}

此時的id來源會是[FromQuery],上面兩者結果一樣。

情境二:

[HttpGet("{id}")]
public IActionResult Get(string id)
{
}
[HttpGet("{id}")]
public IActionResult Get([FromRoute]string id)
{
}

此時的id來源會是[FromRoute],上面兩者結果一樣。
那這時如果你這樣下。

[HttpGet("{id}")]
public IActionResult Get([FromQuery]string id)
{
}

那就不會取路由的id,而會從GET的參數id而來,也就是說在特定情況下,你不想用預設的來源的話,你就可以自己在參數前面加上你要的標籤就會改變來源。

情境三:

[HttpGet("{id}")]
public IActionResult Get(TodoSelectParameter value)
{
}
[HttpGet("{id}")]
public IActionResult Get([FromBody] TodoSelectParameter value)
{
}

如果參數為類別,那預設就會是[FromBody],上面兩者結果會一樣。

所以也就是因為這樣,我們上一章把全部參數變成一個類別時,他來源會變成[FromBody],所以我們就要指定他的來源是[FromQuery]而不能用預設([FromBody])的。

public IActionResult Get([FromQuery] TodoSelectParameter value)
{
}

那最後[FromForm]會用在哪呢?在API這邊通常可能是上傳檔案時用的。

以上是今天的簡單教學,想看一些實測可以看影片。

新手分享學習成果,若有錯誤,煩請告知修正,感謝🙏

參考文章:
使用 ASP.NET Core 建立 Web API


#ASP.NET Core #Web API #.NET 5







Related Posts

測到一個 bug

測到一個 bug

Vue3 Teleport 將元件指定位置

Vue3 Teleport 將元件指定位置

CSS保健室|font-feature-settings

CSS保健室|font-feature-settings


Comments