1. 程式人生 > WINDOWS開發 >.NET Core WEB API介面引數模型繫結

.NET Core WEB API介面引數模型繫結

.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的請求方式如下: