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");
});
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;
}
}
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;
}
}
1) Konfiguratsiya:
services.AddHttpClient<GitHubClient>();
2) Foydalanish:
public class MyService(GitHubClient gitHubClient)
{
public async Task<string> GetGitHubDataAsync()
{
return await gitHubClient.GetRepositoryDataAsync();
}
}
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)