.NET Core WEB API中接口参数的模型绑定的理解
在.NET Core WEB API中參數(shù)的模型綁定方式有以下表格中的幾種:
微軟官方文檔說明地址:https://docs.microsoft.com/zh-cn/aspnet/core/web-api/?view=aspnetcore-2.1
| 特性?? | 綁定源 |
| [FromHeader] | 請求標頭 |
| [FromQuery] | 請求查詢字符串參數(shù) |
| [FromForm] | 請求正文中的表單數(shù)據(jù) |
| [FromBody] | 請求正文 |
| [FromRoute] | 當前請求中的路由 |
| [FromServices] | 作為操作參數(shù)插入的請求服務(wù) |
接下來將對其中一些特性在實際中的使用方式做出簡要說明。首先要新建一個ASP .NET Core WEB API的工程。
顧名思義就是從Http的Request Headers:中獲取數(shù)據(jù)。使用示例代碼如下:
?使用https用Url的方式請求訪問,方法返回的結(jié)果為空,如下圖所示。并且此時的Request Headers中并沒有headerParam參數(shù)。
使用Postman給方法的Request Headers加入 headerParam:10。此時方法返回了結(jié)果,如下圖所示。
console日志詳情如下圖:
通過以上測試可以發(fā)現(xiàn),使用參數(shù)使用[FromHeader]特性時,沒有給參數(shù)賦值時,參數(shù)使用的是.NET中類型的默認值,也就是Default(T)。
? 對于復(fù)雜類型的參數(shù)請求,也就是參數(shù)類型為對象時,MVC中間件會默認以把數(shù)據(jù)轉(zhuǎn)換為JSON格式。對于Get請求如果想要用URL查詢字符串查詢數(shù)據(jù)。就得在參數(shù)前面加[FromQuery]特性,使用示例代碼如下:
使用Postman請求結(jié)果如下如下:
如果去掉[FromQuery]特性請求數(shù)據(jù),就會提示415錯誤,如下圖所示:
對[FromQuery]的請求方式做出總結(jié):
1.如果使用了[FromQuery]特性,必須使用請求查詢字符串作為參數(shù),用JSON格式的數(shù)據(jù)請求則會報415錯誤。
2.如果去掉[FromQuery]特性,則必須使用JSON格式的數(shù)據(jù)請求,用請求從查詢字符串作為參數(shù)則會報415錯誤。
[FromForm]特性請求標頭中的Content-Type為form表單形式:Content-Type:"application/x-www-form-urlencoded",示例代碼如下:
Postman的請求結(jié)果如下:
?使用[FromBody]特性,MVC中間件會把請求參數(shù)默認轉(zhuǎn)換為JSON格式。所以請求是必須使用JSON格式的數(shù)據(jù)。示例代碼如下:
Postman的請求方式如下圖:
返回結(jié)果如下圖:
既然MVC中間件默認[FromBody]的參數(shù)請求為JSON格式,那可不可以使用XML格式的參數(shù)作為請求數(shù)據(jù):
1.安裝NuGet包:Install-Package Microsoft.AspNetCore.Mvc.Formatters.Xml?
2.在Startup.cs的ConfigureServices方法中添加如下圖所示的方法AddXmlSerializerFormatters:
3.使用Postman的請求方式如下:
返回結(jié)果如下圖所示:
給Request Headers的請求頭加上 Accept: "text/xml" 可以指定返回的數(shù)據(jù)為xml格式,Postman的請求方式如下:
Postman的返回結(jié)果如下圖所示,通過下圖查看返回了xml的數(shù)據(jù)。
以上就是個人對請求參數(shù)特性的總結(jié)。
原文地址:https://www.cnblogs.com/fengye310/p/10541468.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結(jié)
以上是生活随笔為你收集整理的.NET Core WEB API中接口参数的模型绑定的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用 Powershell 远程连接 w
- 下一篇: ASP.Net Core Razor 部