将 [FromBody] 属性应用于 .net 核心中的所有控制器操作



拥有一个简单的.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();
}
}

相关内容

最新更新