.NET Core ile HTTP İstekleri Gerçekleştirmek - IHttpClientFactory

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.  

Dokümantasyon: Swagger UI (nager.at)

Örneğimin Github Proje Linki için tıklayınız

Demo


Kaynaklar

Microsoft Blog Linki

API linki konusunda yararlandığım okuma




Yorumlar

Yorum Gönder