具有一个简单的.NET Core API,您的模型以JSON形式发布在请求主体中,如何将[FromBody]
属性应用于所有控制器方法?
[Route("api/simple")]
public class SimpleController : ControllerBase
{
[HttpPost]
public IActionResult Post([FromBody] MyRequest request)
{
return Ok();
}
}
如果我删除[FromBody]
属性,则所有模型属性都将为空。
答案 0 :(得分:1)
如果您使用POST
将模型Content-Type: application/json
放置在体内,那么您 have to 告诉ModelBinder
通过应用从身体读取模型[FromBody]
属性。
但是将[FromBody]
添加到所有API操作中会使您感到不舒服。
只需将[ApiController]应用于您的控制器,然后您就不再需要[FromBody]
。
[ApiController]
的Microsoft Doc定义
指示使用一种类型和所有派生类型来提供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();
}
}