Negli scorsi script ci siamo occupati di API versioning in ASP.NET Core tramite la libreria ASP.Versioning. Questa volta vogliamo affrontare lo stesso argomento, ma dal punto di vista del client.
La libreria infatti contiene un package pensato per integrarsi con HttpClientFactory, denominato Asp.Versioning.Http.Client. Una volta aggiunto al nostro progetto
dotnet add package Asp.Versioning.Http.Client
possiamo configurare HttpClient direttamente nell'IoC container. Per esempio, immaginiamo di avere un'applicazione Blazor, possiamo scrivere il seguente codice nella classe Program:
public static async Task Main(string[] args) { // altro codice qui... builder.Services .AddRefitClient<IWeatherClient>() .ConfigureHttpClient(c => c.BaseAddress = new Uri("https://localhost:7133")) .AddApiVersion(2); await builder.Build().RunAsync(); }
Nel nostro caso, abbiamo sfruttato anche la libreria Refit (https://www.aspitalia.com/script/1451/Usare-Refit-Polly-Blazor-Creare-Client-Affidabili-Fortemente-Tipizzati.aspx), e abbiamo specificato, tramite il metodo AddApiVersion, che vogliamo utilizzare la versione 2 dei nostri endpoint.
A questo punto, eseguendo l'applicazione, possiamo verificare che tutte le nostre chiamate tramite HttpClient verranno decorate con il parametro in query string contenente il numero di versione:
Si tratta, come possiamo immaginare, di uno strumento molto comodo, che ci permette di evitare di specificare in maniera esplicita questo parametro tutte le volte che usiamo HttpClient.
Se invece che query string usiamo un path nello URL per specificare la versione, dobbiamo registrare preventivamente l'IApiVersionWriter desiderato:
builder.Services.AddSingleton<IApiVersionWriter>(new UrlSegmentApiVersionWriter("{version}")); builder.Services .AddRefitClient<IWeatherClient>() .ConfigureHttpClient(c => c.BaseAddress = new Uri("https://localhost:7133/v{version}")) .AddApiVersion(2);
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Usare lo spread operator con i collection initializer in C#
Hosting di componenti WebAssembly in un'applicazione Blazor static
Evitare il flickering dei componenti nel prerender di Blazor 8
Utilizzare Azure Cosmos DB con i vettori
Proteggere le risorse Azure con private link e private endpoints
Eseguire una query su SQL Azure tramite un workflow di GitHub
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Generare velocemente pagine CRUD in Blazor con QuickGrid
I più letti di oggi
- Finalmente anche Silverlight 4.0 è RTW!
- Nuovi controlli nel Silverlight for Windows Phone Toolkit di novembre 2010
- Visual Studio 2019 sarà disponibile a partire dal 2 Aprile
- .NET Alerts Software Development Kit
- Microsoft Security Bulletin MS03-007
- VS 2005 beta 2 dal 25 Aprile in Europa
- Introduzione a Visual Studio Online
- Sfruttare le dipendenze con il model binding di ASP.NET Web Forms
- Documentare ASP.NET Web API con Swagger
- Realizzare un contatore di click