在.NET Core WEB API中引數的模型系結方式有以下表格中的幾種:
微軟官方檔案說明地址:https://docs.microsoft.com/zh-cn/aspnet/core/web-api/?view=aspnetcore-2.1
特性 | 系結源 |
[FromHeader] | 請求標頭 |
[FromQuery] | 請求查詢字串引數 |
[FromForm] | 請求正文中的表單資料 |
[FromBody] | 請求正文 |
[FromRoute] | 當前請求中的路由 |
[FromServices] | 作為操作引數插入的請求服務 |
接下來將對其中一些特性在實際中的使用方式做出簡要說明。首先要新建一個ASP .NET Core WEB API的工程。
顧名思義就是從Http的Request Headers:中獲取資料。使用示例程式碼如下:
使用https用Url的方式請求訪問,方法傳回的結果為空,如下圖所示。並且此時的Request Headers中並沒有essay-headerParam引數。
使用Postman給方法的Request Headers加入 essay-headerParam:10。此時方法傳回了結果,如下圖所示。
console日誌詳情如下圖:
透過以上測試可以發現,使用引數使用[FromHeader]特性時,沒有給引數賦值時,引數使用的是.NET中型別的預設值,也就是Default(T)。
對於複雜型別的引數請求,也就是引數型別為物件時,MVC中介軟體會預設以把資料轉換為JSON格式。對於Get請求如果想要用URL查詢字串查詢資料。就得在引數前面加[FromQuery]特性,使用示例程式碼如下:
使用Postman請求結果如下如下:
如果去掉[FromQuery]特性請求資料,就會提示415錯誤,如下圖所示:
對[FromQuery]的請求方式做出總結:
1.如果使用了[FromQuery]特性,必須使用請求查詢字串作為引數,用JSON格式的資料請求則會報415錯誤。
2.如果去掉[FromQuery]特性,則必須使用JSON格式的資料請求,用請求從查詢字串作為引數則會報415錯誤。
[FromForm]特性請求標頭中的Content-Type為form表單形式:“application/x-www-form-urlencoded”,示例程式碼如下:
Postman的請求結果如下:
使用[FromBody]特性,MVC中介軟體會把請求引數預設轉換為JSON格式。所以請求是必須使用JSON格式的資料。示例程式碼如下:
Postman的請求方式如下圖:
傳回結果如下圖:
既然MVC中介軟體預設[FromBody]的引數請求為JSON格式,那可不可以使用XML格式的引數作為請求資料:
1.安裝NuGet包:Install-Package Microsoft.AspNetCore.Mvc.Formatters.Xml
2.在Startup.cs的ConfigureServices方法中新增如下圖所示的方法AddXmlSerializerFormatters:
3.使用Postman的請求方式如下:
傳回結果如下圖所示:
給Request Headers的請求頭加上 Accept: “text/xml” 可以指定傳回的資料為xml格式,Postman的請求方式如下:
Postman的傳回結果如下圖所示,透過下圖檢視傳回了xml的資料。
以上就是個人對請求引數特性的總結。
朋友會在“發現-看一看”看到你“在看”的內容