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:

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;
}