Dela via


Använda webb-API-analysverktyg

ASP.NET Core tillhandahåller ett MVC-analysverktygspaket som är avsett för användning med webb-API-projekt. Analysverktygen arbetar med kontrollanter som kommenterats med ApiControllerAttribute, samtidigt som de bygger på webb-API-konventioner.

Analysverktygspaketet meddelar dig om alla kontrollantåtgärder som:

  • Returnerar en odeklarerad statuskod.
  • Returnerar ett resultat av odeklarerat lyckat resultat.
  • Dokumenterar en statuskod som inte returneras.
  • Innehåller en explicit modellverifieringskontroll.

Referera till analysatorpaketet

Analysverktygen ingår i .NET SDK. Om du vill aktivera analysatorn i projektet tar du med IncludeOpenAPIAnalyzers egenskapen i projektfilen:

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

Analysverktyg för webb-API-konventioner

OpenAPI-dokument innehåller statuskoder och svarstyper som en åtgärd kan returnera. I ASP.NET Core MVC används attribut som ProducesResponseTypeAttribute och ProducesAttribute för att dokumentera en åtgärd. ASP.NET Dokumentation om Core-webb-API:et med Swagger/OpenAPI går in närmare på hur du dokumenterar webb-API:et.

En av analysverktygen i paketet inspekterar kontrollanter som kommenterats med ApiControllerAttribute och identifierar åtgärder som inte helt dokumenterar deras svar. Tänk på följande exempel:

// 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);
}

Föregående åtgärd dokumenterar returtypen för HTTP 200 framgång, men dokumenterar inte HTTP 404-felkoden. Analysatorn rapporterar den saknade dokumentationen för HTTP 404-statuskoden som en varning. Ett alternativ för att åtgärda problemet finns.

en analysator som rapporterar en varning

Analysverktyg kräver Microsoft.NET.Sdk.Web

Analysverktyg fungerar inte med biblioteksprojekt eller projekt som refererar till Sdk="Microsoft.NET.Sdk".

Additional resources