0Pricing
C# Academy · Lezione

Documentazione delle API versionate

Renda disponibile la documentazione per più versioni delle API.

Documentazione delle API versionate è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 4 lezioni in totale.

Un documento per ogni versione

Quando un'API ha più versioni, in genere è preferibile avere un documento OpenAPI separato per ogni versione, così gli utenti visualizzano solo gli endpoint pertinenti.

// /openapi/v1.json -> only v1 endpoints
// /openapi/v2.json -> only v2 endpoints

Il provider delle descrizioni delle versioni dell'API

Asp.Versioning espone IApiVersionDescriptionProvider, che elenca tutte le versioni dell'API individuate. È possibile scorrerle per registrare un documento per ogni versione.

var provider = app.Services
    .GetRequiredService<IApiVersionDescriptionProvider>();

foreach (var desc in provider.ApiVersionDescriptions)
{
    // desc.GroupName is e.g. "v1", "v2"
}

Registrazione di un documento per ogni versione

Chiami AddOpenApi una volta per ogni gruppo di versioni e assegni a ciascun documento il nome del gruppo.

builder.Services
    .AddApiVersioning()
    .AddApiExplorer(o =>
    {
        o.GroupNameFormat = "'v'VVV";
        o.SubstituteApiVersionInUrl = true;
    });

builder.Services.AddOpenApi("v1");
builder.Services.AddOpenApi("v2");

Filtraggio degli endpoint nel documento corretto

Usi un trasformatore del documento o il predicato ShouldInclude, in modo che ogni documento contenga solo gli endpoint della relativa versione, identificati dal nome del gruppo.

builder.Services.AddOpenApi("v1", options =>
{
    options.ShouldInclude = description =>
        description.GroupName == "v1";
});

Mappatura dei documenti

MapOpenApi, con il modello predefinito, espone ogni documento denominato all'indirizzo /openapi/{documentName}.json.

app.MapOpenApi();
// /openapi/v1.json and /openapi/v2.json both available

Impostazione delle informazioni per documento

Assegni a ogni documento di versione il proprio titolo e la propria versione tramite un trasformatore, così che la documentazione sia autoesplicativa.

builder.Services.AddOpenApi("v2", options =>
{
    options.AddDocumentTransformer((doc, ctx, ct) =>
    {
        doc.Info.Title = "Catalog API v2";
        doc.Info.Version = "2.0";
        return Task.CompletedTask;
    });
});

Indicazione delle versioni deprecate nella documentazione

Se una versione è deprecata, lo indichi nella descrizione del documento, così gli utenti visualizzeranno l'avviso nell'interfaccia.

options.AddDocumentTransformer((doc, ctx, ct) =>
{
    if (ctx.DocumentName == "v1")
        doc.Info.Description = "DEPRECATED - migrate to v2.";
    return Task.CompletedTask;
});

Sostituzione della versione negli URL

SubstituteApiVersionInUrl = true sostituisce il token di route {version:apiVersion} con la versione concreta, ad esempio v1, nel documento, così i percorsi risultano più leggibili.

// Without: /api/v{version}/products
// With:    /api/v1/products

Una scheda dell'interfaccia per ogni versione

La maggior parte dei visualizzatori può mostrare un menu a discesa con tutti i documenti. Configuri l'interfaccia in modo che punti al JSON di ogni versione.

app.MapScalarApiReference(options =>
{
    options.AddDocument("v1", "API v1", "/openapi/v1.json");
    options.AddDocument("v2", "API v2", "/openapi/v2.json");
});

Documentazione delle strutture di richiesta e risposta

Poiché la v2 potrebbe modificare i DTO, assegni a ogni versione i propri tipi DTO. OpenAPI visualizzerà quindi automaticamente schemi distinti per ogni documento.

// V1 DTO
public record ProductV1(int Id, string Name);
// V2 DTO (breaking change)
public record ProductV2(int Id, string Title, decimal Price);

Composizione finale

Il flusso completo: configuri il versionamento e API Explorer, registri un documento OpenApi per ogni versione con un filtro, esegua il mapping dei documenti e punti l'interfaccia a ciascuno di essi.

builder.Services.AddApiVersioning().AddApiExplorer(o =>
{
    o.GroupNameFormat = "'v'VVV";
    o.SubstituteApiVersionInUrl = true;
});
builder.Services.AddOpenApi("v1");
builder.Services.AddOpenApi("v2");
// ...
app.MapOpenApi();
app.MapScalarApiReference();

Verifica rapida

Verifichi come vengono prodotti i documenti versionati.

Riepilogo

Ha documentato API versionate:

  • Registri un documento OpenAPI denominato per ogni versione con AddOpenApi("vN").
  • IApiVersionDescriptionProvider enumera le versioni; ShouldInclude filtra gli endpoint.
  • SubstituteApiVersionInUrl visualizza percorsi con la versione concreta.
  • Punti l'interfaccia a ogni documento per una visualizzazione per versione.

Il corso sul versionamento e su OpenAPI è terminato.

Domande Frequenti

La lezione «Documentazione delle API versionate» è gratuita?

Sì — il testo completo di «Documentazione delle API versionate» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 4 lezioni in totale.

Cosa imparerò in «Documentazione delle API versionate»?

Renda disponibile la documentazione per più versioni delle API. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C# Academy?

Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Documentazione delle API versionate»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C# Academy?

Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Strategie di versionamento delle API
  2. Configurazione di Asp.Versioning
  3. Generazione di documenti OpenAPI
  4. Documentazione delle API versionate
← Torna a C# Academy