Moh*_*hin 1 modelbinders .net-core asp.net-core asp.net-core-webapi
拥有一个简单的 .NET Core API,并且模型在请求正文中以 JSON 形式发布,如何将[FromBody]属性应用于所有控制器方法?
[Route("api/simple")]
public class SimpleController : ControllerBase
{
[HttpPost]
public IActionResult Post([FromBody] MyRequest request)
{
return Ok();
}
}
Run Code Online (Sandbox Code Playgroud)
如果我删除该[FromBody]属性,所有模型属性都将为空。
如果您POST的模型位于体内,Content-Type: application/json那么您必须通过应用告诉ModelBinder从体内读取模型[FromBody]。
但是添加[FromBody]到所有 API 操作会让您感觉很糟糕。
只需将[ApiController]应用到您的控制器即可,然后您就不再需要了[FromBody]。
微软文档定义[ApiController]
指示类型和所有派生类型用于提供 HTTP API 响应。
用此属性装饰的控制器配置了旨在改善开发人员构建 API 的体验的功能和行为。
因此,在 ASP.NET Core 2.1 及更高版本中,无需 [FromBody] 即可工作
[Route("api/simple")]
[ApiController]
public class SimpleController : ControllerBase
{
[HttpPost]
public IActionResult Post(OrderRequest request)
{
return Ok();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2549 次 |
| 最近记录: |