DEV Community

MustafaSamedYeyin
MustafaSamedYeyin

Posted on

Asp.net core Http Request Giriş.

HttpClient ile bir url'ye nasıl istek yapabiliriz ? Hemen örneğe başlayalım :

Örneğin bir api'ye mvc projemizden nasıl istek atarız ?

1.) Öncelikle bir "Blank Solution" oluşturalım.

2.) Yarattığımız solution içine Mvc ve Api projesi yaratalım
aşağıdaki gibi :

Image description

3.) Mvc projesinin launchSettings.json dosyasına gelip portlarını aşağıdaki gibi değiştirelim :

"applicationUrl": "https://localhost:5003;http://localhost:5002",
Enter fullscreen mode Exit fullscreen mode

launchSettings.json aşağıdaki gibi gözükmelidir:

Image description

Faklı port veriyoruz çünkü api projesinin ve mvc projesinin portları default olarak aynı gelir ama biz iki projeyi aynı anda ayağı kaldıracağımızdan çakışmayı önlemek istiyoruz.

4.) Mvc projemize Service adlı bir klasör ve klasörün içine WeatherForecastService.cs adlı bir class oluşturalım :

Image description

5.) Mvc projemize NewtonSoft.json adlı nuget package'i yükleyelim.

6.) Mvc projemizde Startup.cs altında ConfigureServices metodumuzu aşağıdaki gibi değiştirelim :

public void ConfigureServices(IServiceCollection services)
        {
            services.AddHttpClient();
            services.AddScoped<WeatherForecastService>();
            services.AddControllersWithViews();
        }
Enter fullscreen mode Exit fullscreen mode

7.) Oluşturmuş olduğumuz Service/WeatherForecastService.cs adlı dosyamızı aşağıdaki kodları yapıştıralım :

public class WeatherForecastService
    {
        private readonly HttpClient _httpClient;
        public WeatherForecastService(HttpClient httpClient)
        {
            _httpClient = httpClient;
        }
        public async Task<string> GetWeatherForecast()
        {
            var response = await _httpClient.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

8.) Mvc prjemizdeki HomeController'ı aşağıdaki gibi değiştirelim :


public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
        private readonly WeatherForecastService _weatherForecastService;
        public HomeController(...,ILogger<HomeController> logger, WeatherForecastService weatherForecastService)
        {
            _logger = logger;
            _weatherForecastService = weatherForecastService;
        }

        public async Task<IActionResult> Index()
        {
            ViewBag.Bag = await _weatherForecastService.GetWeatherForecast();
            return View();
        }
.
.
.

Enter fullscreen mode Exit fullscreen mode

Burada yaptığımız şey WeatherForecastService'i di olarak geçiyoruz ve GetWeatherForecast diyerek ViewBag'e değerimizi atıyoruz ki view de görelim.

Not: Üç noktalar farklı olabiecek servis veya View'lar olabileceğini temsil etmek için kullanıldı. Kodu yapıştırdıktan sonra üç noktaları lütfen siliniz.

9.) View'de görebilmek için ViewBag.Bag'i de view'de yazmamız lazım :

View/Home/Index.cshtml'e gidelim :

Image description

ve aşağıdaki kodları Index.cshtml'e yapıştıralım :

@{
    ViewData["Title"] = "Home Page";
}
@ViewBag.Bag
<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
Enter fullscreen mode Exit fullscreen mode

10.) Api projemizi "dotnet run" ile ayağı kaldıralım.

11.) Mvc projemizi "dotnet run" ile ayağı kaldıralım.

Sonuç :

Image description

Datalarımızı aldık.

Not : Eğer farklı istekler yapacaksak GetAsync yerine PostAsync, PutAsync, DeleteAsync gibi HttpClient metotlarımız da var.

Kullanımları görmek için aşağıdaki linke bakabilirsiniz :

https://github.com/Fcakiroglu16/Udemy_NLayer_Project/blob/mvc_app_api-feature/UdemyNLayerProject.Web/ApiService/CategoryApiService.cs

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

En iyi dileklerim ile.

Mustafa Samed Yeyin.

Discussion (0)