DEV Community

Ben Randall
Ben Randall

Posted on

Named va Typed HttpClient haqida

ASP.NET Core da HttpClient - HTTP so'rovlarini yuborishda keng qo'llaniladi. HttpClientFactory yordamida biz HTTP so'rovlarining boshqarilishini samarali nazorat qilishimiz mumkin. Bu jarayonda Named va Typed HttpClient tushunchalari muhim o'rin tutadi. Ushbu maqolada bu ikki yondashuvning mohiyati, afzalliklari va farqlari haqida batafsil ma'lumot beriladi.

Named HttpClient

Named HttpClient - bu ma'lum bir nom bilan belgilangan va qayta foydalanish uchun sozlangan HttpClientdir. Har bir nomga mos ravishda o'ziga xos konfiguratsiya taqdim etilishi mumkin.

Qanday ishlaydi?

1) AddHttpClient metodi yordamida named HttpClientni sozlaymiz.
2) IHttpClientFactory orqali nomni ko‘rsatib, tegishli HttpClientni olishingiz mumkin.

Misol

1) Konfiguratsiya:

services.AddHttpClient("GitHub", client =>
{
    client.BaseAddress = new Uri("https://api.github.com/");
    client.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactoryExample");
});
Enter fullscreen mode Exit fullscreen mode

2) Foydalanish:

public class MyService(IHttpClientFactory clientFactory)
{

    public async Task<string> GetGitHubDataAsync()
    {
        var client = clientFactory.CreateClient("GitHub");
        var response = await client.GetAsync("/repos/dotnet/runtime");

        if (response.IsSuccessStatusCode)
        {
            return await response.Content.ReadAsStringAsync();
        }

        return null;
    }
}
Enter fullscreen mode Exit fullscreen mode

Afzalliklari
Bir joyda konfiguratsiya qilingan bir nechta HttpClientlar oson boshqariladi. Har xil API uchun bir xil kod bazasi ichida turli konfiguratsiyalarni amalga oshirish imkoniyati. Bir xil nom ostida ishlatiladigan HttpClientni qayta sozlash imkoniyati.


Typed HttpClient

Typed HttpClient - bu ma'lum bir xizmat yoki API uchun maxsus yozilgan, strongly-typed class lar bilan ishlaydi. Ushbu yondashuv yordamida har bir xizmat uchun alohida HttpClient konfiguratsiyasi amalga oshiriladi.

Qanday ishlaydi?

1) AddHttpClient yordamida service class uchun HttpClientni sozlaymiz.
2) Service class o'zida HttpClientni ishlatib, API bilan muloqot qilish uchun metodlar taqdim qilamiz.

Misol

Typed HttpClient class:

public class GitHubClient
{
    private readonly HttpClient _httpClient;

    public GitHubClient(HttpClient httpClient)
    {
        _httpClient = httpClient;
        _httpClient.BaseAddress = new Uri("https://api.github.com/");
        _httpClient.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactoryExample");
    }

    public async Task<string> GetRepositoryDataAsync()
    {
        var response = await _httpClient.GetAsync("/repos/dotnet/runtime");

        if (response.IsSuccessStatusCode)
        {
            return await response.Content.ReadAsStringAsync();
        }

        return null;
    }
}
Enter fullscreen mode Exit fullscreen mode

1) Konfiguratsiya:

services.AddHttpClient<GitHubClient>();
Enter fullscreen mode Exit fullscreen mode

2) Foydalanish:

public class MyService(GitHubClient gitHubClient)
{

    public async Task<string> GetGitHubDataAsync()
    {
        return await gitHubClient.GetRepositoryDataAsync();
    }
}
Enter fullscreen mode Exit fullscreen mode

Afzalliklari

Konfiguratsiya va API muloqotining biznes logikadan ajratilishi. Aniq xizmatga qaratilgan sinf orqali ishlash. Sinfni mock qilish imkoniyati yuqoriligi.

Named va Typed HttpClient: Solishtirish

Xususiyat Named HttpClient Typed HttpClient
Konfiguratsiya usuli Nom orqali aniqlanadi Maxsus sinf orqali aniqlanadi
Qayta foydalanish Bir xil nomdagi konfiguratsiya Xizmatga xos, maxsus foydalanish
Testlash qulayligi Mock qilish qiyinroq Mock qilish oson
Moslashuvchanlik Ko‘p konfiguratsiya uchun mos Aniq maqsadga yo‘naltirilgan

Qachon qaysi biridan foydalanish kerak?

Named HttpClient: Turli API endpointlari uchun bir xil konfiguratsiyani ishlatishimiz kerak bo‘lsa va ko'p joyda bir xil konfiguratsiya talab qilinsa.
Typed HttpClient: Ma'lum bir API bilan ishlash uchun maxsus xizmat yaratish kerak bo‘lsa va xizmat kapsulyatsiyasi va testlash uchun qulaylik talab qilinsa.

Xulosa

Named va Typed HttpClient lar ASP.NET Core ilovalaringizda HTTP so'rovlarini boshqarishni osonlashtiradi. Agar siz umumiy konfiguratsiya talab qiladigan API bilan ishlasangiz, Named HttpClient qulayroq bo'ladi. Ammo xizmatga xos, mustaqil foydalaniladigan konfiguratsiyalar uchun Typed HttpClient dan foydalanish maqsadga muvofiqdir. Har ikkisi ham HttpClientFactory imkoniyatlaridan foydalangan holda ulanishlarni samarali boshqarishga yordam beradi.

Top comments (0)