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 endpointsIl 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 availableImpostazione 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/productsUna 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"). IApiVersionDescriptionProviderenumera le versioni;ShouldIncludefiltra gli endpoint.SubstituteApiVersionInUrlvisualizza 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
- Strategie di versionamento delle API
- Configurazione di Asp.Versioning
- Generazione di documenti OpenAPI
- Documentazione delle API versionate