Usare documenti openAPI

Usare l'interfaccia utente di Swagger per i test ad hoc locali

Per impostazione predefinita, il Microsoft.AspNetCore.OpenApi pacchetto non viene fornito con il supporto predefinito per la visualizzazione o l'interazione con il documento OpenAPI. Gli strumenti più diffusi per la visualizzazione o l'interazione con il documento OpenAPI includono L'interfaccia utente di Swagger e ReDoc. L'interfaccia utente di Swagger e ReDoc possono essere integrate in un'app in diversi modi. Gli editor come Visual Studio e VS Code offrono estensioni ed esperienze predefinite per il test su un documento OpenAPI.

Il Swashbuckle.AspNetCore.SwaggerUi pacchetto fornisce un bundle di asset Web dell'interfaccia utente di Swagger da usare nelle app. Questo pacchetto può essere usato per eseguire il rendering di un'interfaccia utente per il documento generato. Per eseguire questa configurazione:

  • Installare il pacchetto Swashbuckle.AspNetCore.SwaggerUi.
  • Abilitare il middleware swagger-ui con un riferimento alla route OpenAPI registrata in precedenza.
  • Per limitare la divulgazione e la vulnerabilità della sicurezza delle informazioni, abilitare solo l'interfaccia utente di Swagger negli ambienti di sviluppo.
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.OpenApi;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.OpenApi.Models;

var builder = WebApplication.CreateBuilder();

builder.Services.AddOpenApi();

var app = builder.Build();

app.MapOpenApi();
if (app.Environment.IsDevelopment())
{
    app.UseSwaggerUI(options =>
    {
        options.SwaggerEndpoint("/openapi/v1.json", "v1");
    });

}

app.MapGet("/", () => "Hello world!");

app.Run();

Usare Scalar per la documentazione interattiva dell'API

Scalar è un'interfaccia utente di documento interattiva open source per OpenAPI. Scalare può essere integrato con l'endpoint OpenAPI fornito da ASP.NET Core. Per configurare Scalar, installare il Scalar.AspNetCore pacchetto.

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.OpenApi;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.OpenApi.Models;
using Scalar.AspNetCore;

var builder = WebApplication.CreateBuilder();

builder.Services.AddOpenApi();

var app = builder.Build();

app.MapOpenApi();

if (app.Environment.IsDevelopment())
{
    app.MapScalarApiReference();
}

app.MapGet("/", () => "Hello world!");

app.Run();

Documenti OpenAPI generati da Lint con spectrale

Spectral è un linter del documento OpenAPI open source. È possibile incorporare spectralmente in una compilazione dell'app per verificare la qualità dei documenti OpenAPI generati. Installare Spectral in base alle istruzioni di installazione del pacchetto.

Per sfruttare i vantaggi di Spectral, installare il pacchetto per abilitare la Microsoft.Extensions.ApiDescription.Server generazione di documenti OpenAPI in fase di compilazione.

Abilitare la generazione di documenti in fase di compilazione impostando le proprietà seguenti nel file dell'app:Enable document generation at build time by setting the following properties in the app's .csproj file":

<PropertyGroup>
    <OpenApiDocumentsDirectory>$(MSBuildProjectDirectory)</OpenApiDocumentsDirectory>
    <OpenApiGenerateDocuments>true</OpenApiGenerateDocuments>
</PropertyGroup>

Eseguire dotnet build per generare il documento.

dotnet build

Creare un .spectral.yml file con il contenuto seguente.

extends: ["spectral:oas"]

Eseguire spectral lint nel file generato.

spectral lint WebMinOpenApi.json
...

The output shows any issues with the OpenAPI document. For example:

```output
1:1  warning  oas3-api-servers       OpenAPI "servers" must be present and non-empty array.
3:10  warning  info-contact           Info object must have "contact" object.                        info
3:10  warning  info-description       Info "description" must be present and non-empty string.       info
9:13  warning  operation-description  Operation "description" must be present and non-empty string.  paths./.get
9:13  warning  operation-operationId  Operation must have "operationId".                             paths./.get

✖ 5 problems (0 errors, 5 warnings, 0 infos, 0 hints)

Per informazioni su come usare il documento OpenAPI generato in un'API minima in .NET 6, 7 o 8, vedere la panoramica di Swagger e NSwag.