我注意到使用或不使用这个属性效果是相同的。我错了吗?
举个例子:
[Route("[controller]")]
[ApiController]
public class DataTablesController: ControllerBase
{
[HttpGet]
public IActionResult Test()
{
return Ok("test");
}
}
当我删除了[ApiController]
属性时,没有发生任何事情。
在Microsoft文档中,我找到了以下解释:
指示类型及其所有派生类型用于提供HTTP API响应。
使用此属性装饰的控制器被配置为具有针对改善构建API的开发人员体验的特征和行为。
当在程序集上使用时,程序集中的所有控制器都将被视为具有API行为的控制器。
那么API行为是什么?我们为什么要使用它?
ApiBehaviorApplicationModelProvider
(源代码)中找到它执行的具体约定,并且可以通过ApiBehaviorOptions
(源代码)进行自定义行为,该选项模式可通过容器访问。 - Leaky