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.";
}
}
}
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 :
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.
Top comments (0)