使用 Web API 分析器Use web API analyzers

本文内容

ASP.NET Core 2.2 和更高版本提供了用于 Web API 项目的 MVC 分析器包。分析器使用带有 ApiControllerAttribute 批注的控制器,同时构建 Web API 约定

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

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

引用分析器包Reference the analyzer package

在 ASP.NET Core 3.0 或更高版本中,分析器随附在 .NET Core SDK 中。若要在项目中启用分析器,请在项目文件中包含 IncludeOpenAPIAnalyzers 属性:

  1. <PropertyGroup>
  2. <IncludeOpenAPIAnalyzers>true</IncludeOpenAPIAnalyzers>
  3. </PropertyGroup>

包安装Package installation

通过以下方法之一安装 Microsoft.AspNetCore.Mvc.Api.Analyzers NuGet 包:

从“程序包管理器控制台”窗口:

  • >其他 Windows >程序包管理器控制台中转到 "查看"。

  • 导航到 ApiConventions.csproj 文件所在的目录。

  • 执行以下命令:

  1. Install-Package Microsoft.AspNetCore.Mvc.Api.Analyzers
  • 右键单击Solution Pad >添加包 … "中的""文件夹。
  • 将“添加包”窗口的“源”下拉列表设置为“nuget.org”。
  • 在搜索框中输入“Microsoft.AspNetCore.Mvc.Api.Analyzers”。
  • 从结果窗格中选择“Microsoft.AspNetCore.Mvc.Api.Analyzers”包,然后单击“添加包”。

从“集成终端”中运行以下命令:

  1. dotnet add ApiConventions.csproj package Microsoft.AspNetCore.Mvc.Api.Analyzers

运行以下命令:

  1. dotnet add ApiConventions.csproj package Microsoft.AspNetCore.Mvc.Api.Analyzers

Web API 约定的分析器Analyzers for web API conventions

OpenAPI 文档包含操作可能返回的状态代码和响应类型。在 ASP.NET Core MVC 中,ProducesResponseTypeAttributeProducesAttribute 等属性用于记录操作。带有 Swagger/OpenAPI 的 ASP.NET Core Web API 帮助页 进一步介绍有关记录 Web API 的详细信息。

包中的其中一个分析器检查使用 ApiControllerAttribute 进行批注的控制器,并标识不完全记录其响应的操作。请考虑以下示例:

  1. // GET api/contacts/{guid}
  2. [HttpGet("{id}", Name = "GetById")]
  3. [ProducesResponseType(typeof(Contact), StatusCodes.Status200OK)]
  4. public IActionResult Get(string id)
  5. {
  6. var contact = _contacts.Get(id);
  7. if (contact == null)
  8. {
  9. return NotFound();
  10. }
  11. return Ok(contact);
  12. }

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

报告警告的分析器

其他资源Additional resources