In uno script precedente (https://www.aspitalia.com/script/1301/Documentare-Web-API-Swagger-ASP.NET-Core-2.1.aspx), abbiamo visto come configurare Swashbuckle.AspNetCore per generare automaticamente lo swagger document della nostra API.
Quando dobbiamo supportare diverse versioni del client contemporaneamente, la tipica soluzione è quella di esporre la versione dell'API come path dell'URL: /api/v2/people.
Dato che queste API avranno verosimilmente contratti differenti, è possibile esporre diversi swagger document tramite il metodo AddSwaggerGen:
public void ConfigureServices(IServiceCollection services) { // .. altro codice qui .. services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "My Sample API V1", Version = "v1" }); c.SwaggerDoc("v2", new Info { Title = "My Sample API V2", Version = "v2" }); }); }
Ognuno di questi document risponderà a uno specifico indirizzo, che possiamo registrare nella UI per generare una pagina di help per ciascuno di essi:
app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); c.SwaggerEndpoint("/swagger/v2/swagger.json", "My API V2"); });
Swashbuckle utilizza le primitive di ApiExplorer per ispezionare il nostro codice alla ricerca di controller e action. Per specificare la versione di ciascun endpoint disponibile, è pertanto sufficiente sfruttare l'attributo ApiExplorerSettings, che può essere applicato sia a livello di controller che di action.
[Route("api/v2/people")] [ApiExplorerSettings(GroupName = "v2")] public class PeopleV2Controller : Controller { // .. altro codice qui .. }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Usare Refit e Polly in Blazor per creare client affidabili e fortemente tipizzati
Eseguire una query su SQL Azure tramite un workflow di GitHub
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Evitare il flickering dei componenti nel prerender di Blazor 8
Utilizzare gli snapshot con Azure File shares
Load test di ASP.NET Core con k6
Copiare automaticamente le secret tra più repository di GitHub
Usare un KeyedService di default in ASP.NET Core 8
Eseguire attività con Azure Container Jobs
Controllare gli accessi IP alle app con Azure Container Apps
Utilizzare la libreria Benchmark.NET per misurare le performance
Utilizzare i primary constructor di C# per inizializzare le proprietà
I più letti di oggi
- Utilizzare WebAssembly con .NET, ovunque
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Utilizzare il trigger SQL con le Azure Function
- Disabilitare automaticamente un workflow di GitHub (parte 2)
- Paginare i risultati con QuickGrid in Blazor
- Ottimizzazione dei block template in Angular 17