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
Usare Refit e Polly in Blazor per creare client affidabili e fortemente tipizzati
Utilizzare i primary constructor in C#
Effettuare il download di un file via FTP con la libreria FluentFTP di .NET
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Gestire liste di tipi semplici con Entity Framework Core
Sfruttare i KeyedService in un'applicazione Blazor in .NET 8
Determinare lo stato di un pod in Kubernetes
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Gestire undefined e partial nelle reactive forms di Angular