拥有一个简单的.NET Core API,并将模型作为JSON发布在请求正文中,如何将[FromBody]
属性应用于所有控制器方法?
[Route("api/simple")]
public class SimpleController : ControllerBase
{
[HttpPost]
public IActionResult Post([FromBody] MyRequest request)
{
return Ok();
}
}
如果我删除[FromBody]
属性,则所有模型属性都将为空。
如果您使用Content-Type: application/json
将模型POST
体内,则必须告诉ModelBinder
通过应用[FromBody]
属性从主体读取模型。
但是,在所有API 操作中添加[FromBody]
会让您感觉很糟糕。
只需将 [ApiController] 应用到您的控制器,然后您就不再需要[FromBody]
了。
Microsoft 文档对[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();
}
}