Refit – Generowany klient HTTP

Udostępnij

Wprowadzenie

Biblioteka refit bardzo ułatwia pisanie kodu, odpowiedzialnego za połączenia http. Zamiast tworzyć powtarzalne metody, bo zazwyczaj pisząc prostego klienta HTTP, robimy dokładnie to samo, możemy po prostu zaimportować paczkę, która zrobi za nas całą robotę!

Przykład użycia

Importujemy paczkę Refit.HttpClientFactory, tworzymy nowy interfejs (!) i definiujemy potrzebne nam metody. Możemy w łatwy sposób definować typ metody HTTP korzystając z atrybutów, jako parametr przekazujemy route. Przykładowy interfejs z bardzo prostymi metodkami:

public interface ICustomersApiClient
{
    [Get("/customers")]
    public Task<Customer[]> GetCustomers();
    [Get("/customers/{id}")]
    public Task<Customer> GetCustomer(int id);
    [Post("/customers")]
    public Task<int> AddCustomer(Customer customer);
    [Delete("/customers/{id}")]
    Task Delete(int id);
}

Korzystając z depedency injection w nowym .NET, mamy metodki pomocnicze, pozwalające na rejestrację klienta. Metoda AddRefitClient zwraca obiekt typu IHttpClientBuilder, dokładnie ten sam co metoda AddHttpClient! Dzięki temu, dodanie takiego klienta do istniejącej aplikacji, nie powinno być problematyczne!

var builder = services.AddHttpClient<ICustomersApiClient, CustomersApiClient>();
var builder = services.AddRefitClient<ICustomersApiClient>();

Wykorzystując fakt, że zwracany jest ten sam builder, możemy skorzystać z metody ConfigureHttpClient, dzięki czemu w łatwy sposób skonfigurować na przykład bazowy url, albo domyślne nagłówki.

var builder = services.AddRefitClient<ICustomersApiClient>().ConfigureHttpClient(x =>
{
    x.BaseAddress = new Uri("http://google.com");
    x.DefaultRequestHeaders.Add("key", "value");
});

Czytaj również  Middleware - Jak rozszerzyć procesowanie WebApi
Scroll to Top