[ApiController]属性做什么?

[ApiController]属性支持一些特性,包括属性路由需求、自动模型验证和绑定源参数推断。

这是直接从MS docs Create web api中获得的,核心是ASP.NET:

[ApiController]属性可应用于控制器类,以启用以下自以为是的API-specific行为:

  • 属性路由要求
  • 自动HTTP 400响应
  • 绑定源参数推断
  • Multipart/form-data请求推断
  • 错误状态代码的问题详细信息

错误状态代码的问题详细信息功能需要2.2或更高版本的兼容性。其他功能需要2.1或更高版本的兼容性。

有关以下功能的一些详细信息:

Attribute routing

如果使用[ApiController],则需要属性路由,例如:

[ApiController]
[Route("[controller]")]
public class DataTablesController: ControllerBase

通过Startup.Configure中由UseEndpoints、UseMvc或UseMvcWithDefaultRoute定义的常规路由无法访问操作

自动Http 400响应

如果ModelState验证失败,则添加操作筛选器以返回400响应。您不再需要在操作中写入此内容,它将自动处理:

if (!ModelState.IsValid)
{
    return BadRequest(ModelState);
}

绑定源参数推断

同样,从链接的文档:

绑定源属性定义动作参数值所在的位置。存在以下绑定源属性:[FromBody][FromForm][FromHeader][FromQuery][FromRoute][FromServices]

Multipart/form-data请求推断

当用[FromForm]属性注释动作参数时,[ApiController]属性应用推理规则。已推断出multipart/form-data请求内容类型。

 

 

使用绑定源参数推断的示例:

[HttpPost]
public IActionResult Test([FromForm] Model model)
{
    return Ok("test");
}




https://blog.csdn.net/xu2034029667/article/details/115630259

posted on 2022-01-21 15:05  越哲  阅读(1698)  评论(0)    收藏  举报

导航