.NET Core WEB API介面引數模型繫結
阿新 • • 發佈:2020-06-17
.NET Core WEB API
模型繫結方式有以下表格中的幾種:
特性 | 繫結源 |
---|---|
[FromHeader] | 請求標頭 |
[FromQuery] | 請求查詢字串引數 |
[FromForm] | 請求正文中的表單資料 |
[FromBody] | 請求正文 |
[FromRoute] | 當前請求中的路由 |
[FromServices] | 作為操作引數插入的請求服務 |
FromHeader(請求標頭)
顧名思義就是從Http的Request Headers:中獲取資料。使用示例程式碼如下
[HttpGet("TestFromHeader")] public string TestFromHeader([FromHeader]string headerParam) { return $"headerParam: {headerParam}"; }
FromQuery(請求查詢字串引數)
對於複雜型別的引數請求,也就是引數型別為物件時,MVC中介軟體會預設以把資料轉換為JSON格式。對於Get請求如果想要用URL查詢字串查詢資料。就得在引數前面加[FromQuery]特性,使用示例程式碼如下:
[HttpGet("GetUserModel")] public IEnumerable<User> GetUserModel([FromQuery]User users) { var list = new List<User> { new User() { Id = "1",FirstName = "Fname",SecondName = "Sname" },}; return list; }
FromForm(請求正文中的表單資料)
[FromForm]特性請求標頭中的Content-Type為form表單形式:Content-Type:"application/x-www-form-urlencoded",示例程式碼如下:
[HttpPost("AddUserModel")]
public User UserAddUserModel([FromForm]User users)
{
return users;
}
FromBody(請求正文)
使用[FromBody]特性,MVC中介軟體會把請求引數預設轉換為JSON格式。所以請求是必須使用JSON格式的資料。示例程式碼如下:
[HttpPost("ListAllUserByModel")]
public User ListAllUserByModel([FromBody]User users)
{
return users;
}
FromBody的請求引數使用XML格式的資料
既然MVC中介軟體預設[FromBody]的引數請求為JSON格式,那可不可以使用XML格式的引數作為請求資料:
1.安裝NuGet包:Install-Package Microsoft.AspNetCore.Mvc.Formatters.Xml
2.在Startup.cs的ConfigureServices方法中新增如下圖所示的方法AddXmlSerializerFormatters:
FromBody指定返回的資料為XML格式
給Request Headers的請求頭加上 Accept: "text/xml" 可以指定返回的資料為xml格式,Postman的請求方式如下: