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
Sfruttare i KeyedService in un'applicazione Blazor in .NET 8
Eseguire una GroupBy per entity in Entity Framework
Effettuare update massivi con Entity Framework Core 7
Ricevere avvisi su metriche dei server Azure Arc
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Code scanning e advanced security con Azure DevOps
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Utilizzare Tailwind CSS all'interno di React: installazione
Implementare il throttling in ASP.NET Core
Recuperare un elemento inserito nella cache del browser tramite API JavaScript
Specificare il versioning nel path degli URL in ASP.NET Web API
Gestire liste di tipi semplici con Entity Framework Core