在.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的工程。
FromHeader(請求標頭)
顧名思義就是從Http的Request Headers:中獲取數據。使用示例代碼如下:

1 [HttpGet("TestFromHeader")] 2 public string TestFromHeader([FromHeader]string headerParam) 3 { 4 return $"headerParam: {headerParam}"; 5 }
使用https用Url的方式請求訪問,方法返回的結果為空,如下圖所示。並且此時的Request Headers中並沒有headerParam參數。
使用Postman給方法的Request Headers加入 headerParam:10。此時方法返回了結果,如下圖所示。
console日志詳情如下圖:
通過以上測試可以發現,使用參數使用[FromHeader]特性時,沒有給參數賦值時,參數使用的是.NET中類型的默認值,也就是Default(T)。
FromQuery(請求查詢字符串參數)
對於復雜類型的參數請求,也就是參數類型為對象時,MVC中間件會默認以把數據轉換為JSON格式。對於Get請求如果想要用URL查詢字符串查詢數據。就得在參數前面加[FromQuery]特性,使用示例代碼如下:

1 [HttpGet("GetUserModel")] 2 public IEnumerable<User> GetUserModel([FromQuery]User users) 3 { 4 var list = new List<User> 5 { 6 new User() { Id = "1", FirstName = "Fname", SecondName = "Sname" }, 7 }; 8 return list; 9 }
使用Postman請求結果如下如下:
如果去掉[FromQuery]特性請求數據,就會提示415錯誤,如下圖所示:
對[FromQuery]的請求方式做出總結:
1.如果使用了[FromQuery]特性,必須使用請求查詢字符串作為參數,用JSON格式的數據請求則會報415錯誤。
2.如果去掉[FromQuery]特性,則必須使用JSON格式的數據請求,用請求從查詢字符串作為參數則會報415錯誤。
FromForm(請求正文中的表單數據)
[FromForm]特性請求標頭中的Content-Type為form表單形式:"application/x-www-form-urlencoded",示例代碼如下:

1 [HttpPost("AddUserModel")] 2 public User UserAddUserModel([FromForm]User users) 3 { 4 return users; 5 }
Postman的請求結果如下:
FromBody(請求正文)
使用[FromBody]特性,MVC中間件會把請求參數默認轉換為JSON格式。所以請求是必須使用JSON格式的數據。示例代碼如下:

1 [HttpPost("ListAllUserByModel")] 2 public User ListAllUserByModel([FromBody]User users) 3 { 4 return users; 5 }
Postman的請求方式如下圖:
返回結果如下圖:
FromBody的請求參數使用XML格式的數據
既然MVC中間件默認[FromBody]的參數請求為JSON格式,那可不可以使用XML格式的參數作為請求數據:
1.安裝NuGet包:Install-Package Microsoft.AspNetCore.Mvc.Formatters.Xml
2.在Startup.cs的ConfigureServices方法中添加如下圖所示的方法AddXmlSerializerFormatters:
3.使用Postman的請求方式如下:
返回結果如下圖所示:
FromBody指定返回的數據為XML格式
給Request Headers的請求頭加上 Accept: "text/xml" 可以指定返回的數據為xml格式,Postman的請求方式如下:
Postman的返回結果如下圖所示,通過下圖查看返回了xml的數據。
以上就是個人對請求參數特性的總結。