Bu yazımda .Net Core alt yapısında HttpClient nesnesinin pratik olarak kullanımına değineceğim. Özellikle third party API'lere istekte bulunurken kullanışlıdır. .NET Core platformunda IHttpClientFactory interface'i register edilerek kullanılır.
Uygulamalarımızda IHttpClientFactory'i farklı yöntemlerle kullanarak HttpClient nesnesini oluşturup kullanabiliriz. Yazıda, en pratik bulduğum iki yönteme değineceğim.
- Named Clients
Bu kullanımda HttpClient nesnesine farklı isimlendirmelerle (client name) oluşturup uygulamalarımızda çağırabiliriz. Uygulamaların farklı HttpClient nesnesine sahip olması gerektiğinde ve farklı yapılandırma ayarları varsa iyi seçim olabilir.
Yukarıdaki tanımlamada örnek bir API linkinde farklı versiyonlar için farklı isimlendirmelere sahip client oluşturuldu. ConfigureService metodunda AddHttpClient metodunun ilk parametresine (name) uygun isim verilir. CreateClient metodu kullanılarak oluşturulan isimlerden istediğimizi çağırabiliriz.
- Typed Clients
Bu kullanımda, Named Client ile oluşturduğumuz HttpClient nesneleri için ayrı sınıflar oluşturarak ayrım yapabiliriz. Dependency Injection prensibi ile kullanacağımız yerlerde enjekte edebiliriz. Ayrıca hard coded isimler kullanmak yerine tip şeklinde kullanmak kodumuzu temiz hale getirir. HttpClient yapılandırma ayarlarını tek bir yerden kontrol edebiliriz. Bu şekilde Startup.cs dosyasında kod kalabalığından kurtarabiliriz.
Yukarıdaki tanımlamalarda DateHttpClient diye isimlendirdiğimiz bir client tipi oluşturduk. Constructorda BaseAdress ve DefaultRequestHeaders eklemesini yaptık. Bu tipi kullanmak için Startup.cs dosyasında tanımlama işlemini yapıyoruz. Transient olarak tanımlandı ve HttpClient verdiğimizde bize DateHttpClient tipinde bir nesne verecektir. (Depenency Injection Prensibi)
Kullanacağımız yerdeki constructorda aşağıdaki gibi enjekte ediyoruz.
Yukarıda bahsettiğim iki yöntemde HttpClient nesnelerinin daha anlaşılır ve yönetiminin kolay olması için anlatıldı.
Github'da bulunan örneğimizde ülke seçimi yapılır ve seçilen ülkeye ait resmi tatiller getirilir. Aşağıdaki API linki, resmi tatilleri ülke ve yıla göre getirmektedir. Konuyu anlatırken bu linkten faydalandım. Dokümantasyondan kullanımlarını inceleyebilirsiniz.
API Linki: Worldwide Public Holidays - Nager.Date
Dokümantasyon: Swagger UI (nager.at)
Örneğimin Github Proje Linki için tıklayınız
Demo
Microsoft Blog Linki
API linki konusunda yararlandığım okuma
Eline sağlık güzel bir içerik olmuş
YanıtlaSilRica ederim. Faydalı olduysa ne mutlu :)
Sil