DEV Community

MustafaSamedYeyin
MustafaSamedYeyin

Posted on

Asp.net core Http Request HttpClientFactory Giriş.

Bu serinin bir önceki yazısında HttpClient dependency injection olarak geçtik. Bir önceki yazımızdaki yöntemdeki kod çalışır ama tercih edilmemesi gereken bir yöntemdir. HttpClient oluşturacaksak aşağıdaki yöntemler ile oluşturmalıyız :

1.) IHttpClientFactory di olarak kullanmak.
2.) Named HttpClient Factories
3.) Typed HttpClient Factories

Not : Neden HttpClientFactory var diye merak ederserniz aşağıdaki post'ları okuyabilirsiniz :

https://www.aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/
https://www.stevejgordon.co.uk/introduction-to-httpclientfactory-aspnetcore
https://www.danieldonbavand.com/httpclientfactory-net-core-2-1/

Şimdi gelelim nasıl doğru bir şekilde Http Request yapabileceğimize :

1.) IHttpClientFactory di olarak kullanmak.

Öncelikle şu linkteki yazıyı okuyalım : https://dev.to/mustafasamedyeyin/aspnet-core-http-request-giris-132a

Linkteki bütün adımları tamamlayalım çünkü linkteki örneğin devamı yapacağız.

a.) IHttpClientFactory kullanmak için yapacaklarımız çok basit :

WeatherForecastService'de HttpClient olan yerleri IHttpClientFactory olarak değişteceğiz. Daha sonra _httpClient üzerinden CreateClient() metodumuzu çağırıp get,post,put,delete işlemlerini istediğimiz gibi yapabiliriz.

WeatherForecastService.cs class'ımızı aşağıdaki gibi değiştirelim

public class WeatherForecastService
    {
        private readonly IHttpClientFactory _httpClient; //Burası değiştirildi
        public WeatherForecastService(IHttpClientFactory httpClient)//Burası değiştirildi
        {
            _httpClient = httpClient;
        }
        public async Task<string> GetWeatherForecast()
        {

            var response = await _httpClient.CreateClient()//Burası değiştirildi
                .GetAsync(@"https://localhost:5001/WeatherForecast");

            if (response.IsSuccessStatusCode)
            {
                return await response.Content.ReadAsStringAsync();
            }
            else
            {
                return "Yanlış bir şeyler oldu.";
            }
        }
    }
Enter fullscreen mode Exit fullscreen mode

b.) Şimdi ilk başta api uygulamamızı "dotnet run" ile ayağa kaldıralım. Daha sonra mvc uygulamamızı "dotnet run" ile ayağı kaldıralım.

Gördüğünüz üzere :

Image description

Data'larımızı yine api'den getirebildik.

Bu yazıda "IHttpClientFactory di olarak kullanmak." yöntemini gördük. Bir sonraki yazımda "2.) Named HttpClient Factories" adlı başlığı inceleyeceğim.

Bir dahaki yazımda görüşmek dileğiyle.

En iyi dileklerim ile.

Mustafa Samed Yeyin.

Discussion (0)