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 gli embedding e la ricerca vettoriale con Azure SQL Database
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Creare una libreria CSS universale: Cards
Creare alias per tipi generici e tuple in C#
Sfruttare al massimo i topic space di Event Grid MQTT
Creare gruppi di client per Event Grid MQTT
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
C# 12: Cosa c'è di nuovo e interessante
Eseguire una query su SQL Azure tramite un workflow di GitHub