歡迎光臨
每天分享高質量文章

.NET Core WEB API中接口引數的模型系結的理解

在.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的資料。

以上就是個人對請求引數特性的總結。

赞(0)

分享創造快樂