.Net Core Projenizde IHttpClientFactory Kullanımları

Emre Kizildas
Emre Kızıldaş
Published in
2 min readDec 7, 2019

--

Bu yazımda sizlerle disposable bir sınıf olan HttpClient ile kendi yazdığımız veya kullandığımız API ‘lere erişim sağlayabileceğimiz servis sınıfları hakkında konuşacağız.

HttpClient nedir?

Projemizin bir başka uç noktayla (endpoint) iletişim kurması ve bu noktaya Http istekleri atabilmesini sağlayan bir sınıftır. Http isteklerimizi Get, Put, Delete veya Post olarak asenkron olarak yapmamızı sağlamaktadır. .Net Core ‘dan öncesinde genellikle statik olarak kullanılan bu sınıf artık IHttpClientFactory arayüzü sayesinde Dependency Injection (DI)özelliği de kazanarak çok daha performanslı bir şekilde çalıştırılabiliyor.

1. Yöntem

İlk kullanımımızda IHttpClientFactory arayüzünü DI yardımıyla oluşturup bu arayüzden HttpClient nesneleri oluşturabiliriz.

Startup sınıfına aşağıdaki şekilde servis eklememiz gerekiyor.

Bir sınıf içerisinde kullanırken yeni bir HttpClient oluşturup içerisinde Get isteği yapalım.

FirstUsageModel sınıfımız içerisinde bir HttpClient nesnesi oluşturduk ve bu nesne içerisine öncesinde oluşturduğumuz request nesnesi ile istekte bulunduk. İsteği asenkron olarak yaptıktan sonra response status koduna göre eğer 200 alırsak (IsSuccessStatusCode) cevap içerisindeki Json değeri deserialize ederek kendi Users listemize çevirmiş olduk.

2. Yöntem: İsimlendirilmiş HttpClient Nesneleri

Bu kullanımda ise HttpClient nesnelerimize bir anlamda kimlik kazandırmış olacağız. Startup sınıfı içerisinde oluşturduğumuz HttpClient nesnelerine verilen isimle diğer sınıflar içerisinde bu HttpClient nesnesini kullanabileceğiz.

Startup içerisinde bu şekilde HttpClient nesnemizi tanımladıktan sonra örnek kullanımını aşağıdaki kod bloğunda görebilirsiniz:

Yukarıdaki kodda HttpClient için bir alan adı girmenize gerek kalmada yalnızca isteğin yapılacağı yolu belirtmeniz yeterli olacaktır.

★ 3. Yöntem: Kendi Client Nesnelerimizi Oluşturalım

Bahsedeceğim son kullanım yöntemi ve aslında benimde çok beğenerek kullandığım yöntem olan TypedClient yöntemidir. Bu yöntem de client nesnelerimizi kendimiz isimlendirip oluşturabiliyoruz. Ayrıca DI yardımıyla istediğimiz an nesneler çağrılıp sonrasın GC tarafından silinmesiyle büyük performans kazançları sağlıyor.

Oluşturduğumuz bu servis yapısı sayesinde nesnemizi DI kullanarak oluşturabileceğiz. Bu yapıda her bir endpoint için bir servis sınıfı yazabileceğimizi unutmayalım.

Sonrasında bu servisi aşağıdaki yapıda DI ile kullanabiliriz:

Yazımın burada sonuna geldim. Umarım servislerle olan iletişim yapınıza yukarıdaki yöntemlerden bir veya birkaçı sizler için faydalı olmuştur.

Bir sonraki yazımda görüşmek üzere, iletişim için LinkedIn hesabıma yazabilirsiniz. 👋🏼

--

--