HTTPClient
Blazor WebAssembly
L’HttpClient è pronto per essere utilizzato con i settings di default.
È sufficiente effettuare un inject dell’interfaccia ed utilizzarlo direttamente.
Blazor Server
HttpClient è simile ma richiede alcune configurazioni aggiuntive.
HttpClientFactory
A partire da .net Core 2.1 è disponibile una classe specifica, chiamata HttpClientFactory, che si occupa di istanziare HttpClient e gestisce le varie problematiche associate.
Opzioni
HttpClientFactory supporta diverse opzioni di configurazione:
- Basic clients
- Named clients
- Typed clients
- Generated clients
Typed clients rappresenta l’opzione consigliata da Microsoft per le applicazioni enterprise.
Configurazione
Di default un’applicazione Blazor implementa un servizio HttpClient all’interno di ConfigureServices
:
services.AddScoped<HttpClient>(s => {
var client = new HttpClient { BaseAddress = new System.Uri("https://api.dom") };
return client;
})
Questo approccio non consente di richiamare Rest APIs con indirizzi di base differenti.
Helper classes
Blazor mette a disposizione delle classi di Helper che facilitano e promuovono uno sviluppo più strutturato.
var apiURI = new Uri("http://api.dom");
void RegisterTypedClient<TClient, TImplementation>(Uri apiBaseUrl) where TClient: class where TImplementation: class, TClient {
services.AddHttpClient<TClient, TImplementation>(client =>
{
client.BaseAddress = apiBaseUrl;
});
}
// Http Services
RegisterTypedClient<IEmployeeDataService, EmployeeDataService>(apiURI);
...
L’utilizzo all’interno dei servizi rimane il medesimo, perché l’Helper continua a ritornare un’istanza HttpClient.
Quindi il codice sotto funziona senza modifiche:
private readonly HttpClient _htppClient;
public EmployeeDataService(HttpClient httpClient)
{
_httpClient = httpClient;
}