使用 Web API 分析器

Warning

IncludeOpenAPIAnalyzers MSBuild 属性及其关联的 MVC API 分析器自 .NET 10 起弃用,将在将来的版本中删除。 当 IncludeOpenAPIAnalyzers 设置为 true 时,生成会发出警告 ASPDEPR007TypedResults迁移到模式,该模式提供编译时响应类型保证,无需单独的分析器。 有关详细信息,请参阅 IncludeOpenAPIAnalyzers 属性和 MVC API 分析器已弃用

ASP.NET Core 提供了一个 MVC 分析器包,用于 Web API 项目。 分析器在构建 ApiControllerAttribute时使用带注释的控制器。

分析器包会通知你控制器的任何操作:

  • 返回未声明的状态代码。
  • 返回未声明的成功结果。
  • 记录一种不会返回的状态代码。
  • 包括显式模型验证检查。

引用分析器包

分析器包含在 .NET SDK 中。 若要在项目中启用分析器,请在项目文件中包括 IncludeOpenAPIAnalyzers 该属性:

<PropertyGroup>
 <IncludeOpenAPIAnalyzers>true</IncludeOpenAPIAnalyzers>
</PropertyGroup>

Web API 约定的分析器

OpenAPI 文档包含操作可能返回的状态代码和响应类型。 在 ASP.NET Core MVC 中,像ProducesResponseTypeAttributeProducesAttribute这样的属性用于记录操作。 ASP.NET Core Web API 文档(使用 Swagger / OpenAPI)详细介绍了如何记录 Web API。

包中的一个分析器会检查使用ApiControllerAttribute注解的控制器,并识别那些没有完整记录其响应的操作。 请看下面的示例:

// GET api/contacts/{guid}
[HttpGet("{id}", Name = "GetById")]
[ProducesResponseType(typeof(Contact), StatusCodes.Status200OK)]
public IActionResult Get(string id)
{
    var contact = _contacts.Get(id);

    if (contact == null)
    {
        return NotFound();
    }

    return Ok(contact);
}

上述作记录了 HTTP 200 成功返回类型,但不记录 HTTP 404 失败状态代码。 分析器将 HTTP 404 状态代码的缺失文档报告为警告。 提供了修复该问题的选项。

分析器报告警告

分析器需要 Microsoft.NET.Sdk.Web

分析器不适用于库项目或引用Sdk="Microsoft.NET.Sdk"的项目。

其他资源