在ASP.NET Core Web API中,[FromBody]
、[FromForm]
、[FromQuery]
、[FromHeader]
和[FromRoute]
这些特性来明确指定如何绑定请求的不同部分到你的控制器方法参数上。
[FromBody]
通常用于POST和PUT请求,从请求体中读取JSON或XML数据。
[HttpPost] | |
public IActionResult CreateItem([FromBody] Item item) | |
{ | |
// 处理请求体中的Item对象 | |
// ... | |
return Ok(); | |
} |
[FromForm]
用于处理表单数据,通常与multipart/form-data
或application/x-www-form-urlencoded
类型的POST请求一起使用。
[HttpPost] | |
public IActionResult UploadFile([FromForm] IFormFile file, [FromForm] string description) | |
{ | |
// 处理上传的文件和描述 | |
// ... | |
return Ok(); | |
} |
[FromQuery]
用于从查询字符串中读取数据。如果不明确指定,简单类型的参数通常会默认从查询字符串中读取。
[HttpGet] | |
public IActionResult GetItem([FromQuery] int id) | |
{ | |
// 从查询字符串中读取id参数 | |
// ... | |
return Ok(); | |
} | |
// 或者,即使没有[FromQuery],id也会从查询字符串中读取 | |
[HttpGet] | |
public IActionResult GetItem(int id) | |
{ | |
// ... | |
return Ok(); | |
} |
使用[FromHeader]
用于从HTTP请求头中读取数据。
[HttpGet] | |
public IActionResult CheckAuth([FromHeader] string authorizationHeader) | |
{ | |
// 处理授权头信息 | |
// ... | |
return Ok(); | |
} |
[FromRoute]
用于从路由数据中读取数据。当路由模板中有参数时,可以使用此特性明确指定。
[HttpGet("products/{productId}")] | |
public IActionResult GetProduct([FromRoute] int productId) | |
{ | |
// 从路由数据中读取productId | |
// ... | |
return Ok(); | |
} | |
// 或者,即使没有[FromRoute],productId也会从路由中读取 | |
[HttpGet("products/{productId}")] | |
public IActionResult GetProduct(int productId) | |
{ | |
// ... | |
return Ok(); | |
} |
[FromRoute]、[FromQuery]和[FromBody]是.NET WebAPI中用于从不同请求源提取参数的核心特性。
记得点赞哦