Altbilgi içeriğine atla
Iron Academy Logo
C# Uygulaması
C# Uygulaması

Diğer Kategoriler

Sağlık Kontrolleri Ekleme - C# Kursunda Örnek Bir API Oluşturma

[[academy-video-youtube({"vid": "95Unq3X39yg", "start_time": "0", "title": "Sağlık Kontrolleri Ekleme - C# Kursu İçinde Örnek Bir API Oluşturma", "creator": "Tim Corey", "length": "23m 30s"})]]

ASP.NET Core kullanarak C#'ta RESTful API'leri geliştirmek ve test etmek, modern bir arka uç geliştiricisi için pratik bir yetenektir. Tim Corey, "Sağlık Kontrolleri Ekleme - C# Kursu İçinde Örnek Bir API Oluşturma" başlıklı öğretici videosunda, sağlık kontrolleri entegre edilmiş örnek bir API oluşturma sürecini anlatıyor. Bu makale, tamamen Tim'in transkriptine dayanarak, public async Task, int id, var app ve diğer HTTP istek yöntemleri gibi önemli noktaları kapsayan adım adım süreci açıklıyor.

Visual Studio Code kullanarak, Tim Corey'nin bir C# API projesinde sağlık kontrollerini nasıl ayarladığını daha derinlemesine inceleyelim.

Örnek API ve Sağlık Kontrollerine Giriş

Tim, bir örnek API'nin web geliştirmeyi öğrenirken güçlü bir araç olduğunu açıklar. Geliştiricilerin GET, POST, PUT ve DELETE yöntemlerini kullanarak API çağrılarını simüle etmelerine olanak tanır, uygun istek verileri ve durum kodları ile. Tim'in inşa ettiği API destekler:

  • Veri modeli ile örnek veriler

  • API istekleri için RESTful davranışlar

  • JSON formatında yanıtlar

  • Sağlık kontrolleri

  • Docker kapları ve web uygulamaları olarak dağıtım

Sağlık Kontrolleri Paketi Yükleme

Tim, projeyi Visual Studio Code'da açar ve Bağımlılıklar üzerinde sağ tıklayarak NuGet paketlerini yönetir. AspNetCore.HealthChecks.UI.Client paketini arar ve yükler. Bu, uygulamanın iki tür sağlık kontrolünü desteklemesini sağlar.

Sağlık Kontrol Sınıfları Oluşturma

Tim, API proje klasörü içinde Sağlık Kontrolleri adlı yeni bir klasör ekler. Burada IHealthCheck arayüzünü (interface) implement eden, her biri farklı bir durumu temsil eden çeşitli sınıflar oluşturur: sağlıklı, bozulmuş, sağlıksız ve rastgele.

HealthyHealthCheck.cs

Bu sınıf bir public async Task<HealthCheckResult> implementasyonu kullanarak bir HealthCheckResult.Healthy döndürür:

return Task.FromResult(HealthCheckResult.Healthy("This is a test healthy service."));
return Task.FromResult(HealthCheckResult.Healthy("This is a test healthy service."));

Bu, kararlı bir hizmeti nasıl ele alacağını test etmek için yararlı olan sağlıklı bir durumu simüle eder.

DegradedHealthCheck.cs

return Task.FromResult(HealthCheckResult.Degraded("This is a test degraded service."));
return Task.FromResult(HealthCheckResult.Degraded("This is a test degraded service."));

Bu kontrol, bozulmuş hizmet yanıtı döndürür. Kısmi başarısızlığı veya performans sorunlarını simüle etmenin basit bir yoludur.

UnhealthyHealthCheck.cs

return Task.FromResult(HealthCheckResult.Unhealthy("This is a test unhealthy service."));
return Task.FromResult(HealthCheckResult.Unhealthy("This is a test unhealthy service."));

Bu, başarısız bir hizmeti taklit eder, 500 HTTP durum kodu bekleyeceğiniz veya NotFound() döndüreceğiniz durumları simüle eder.

RandomHealthCheck.cs

Bu sağlık kontrolü, rastgele bir tam sayı kullanarak üç durumdan birini simüle eder

int randomResult = Random.Shared.Next(1, 4);
return randomResult switch
{
    1 => Task.FromResult(HealthCheckResult.Healthy("This is a test random service.")),
    2 => Task.FromResult(HealthCheckResult.Degraded("This is a test random service.")),
    3 => Task.FromResult(HealthCheckResult.Unhealthy("This is a test random service.")),
    _ => Task.FromResult(HealthCheckResult.Healthy("This is a test random service."))
};
int randomResult = Random.Shared.Next(1, 4);
return randomResult switch
{
    1 => Task.FromResult(HealthCheckResult.Healthy("This is a test random service.")),
    2 => Task.FromResult(HealthCheckResult.Degraded("This is a test random service.")),
    3 => Task.FromResult(HealthCheckResult.Unhealthy("This is a test random service.")),
    _ => Task.FromResult(HealthCheckResult.Healthy("This is a test random service."))
};

Tim, değişken koşullar altında nasıl davranış testi yapıldığını vurgular.

StartUp Yapılandırmasına Sağlık Kontrollerini Kaydetme

Tim, Startup veya yapılandırma klasöründe yeni bir statik sınıf HealthChecksConfig.cs ekler. Bu klas iç합니다:

AddAllHealthChecks()

services.AddHealthChecks()
    .AddCheck<RandomHealthCheck>("random", tags: new[] { "random" })
    .AddCheck<HealthyHealthCheck>("healthy", tags: new[] { "healthy" })
    .AddCheck<DegradedHealthCheck>("degraded", tags: new[] { "degraded" })
    .AddCheck<UnhealthyHealthCheck>("unhealthy", tags: new[] { "unhealthy" });
services.AddHealthChecks()
    .AddCheck<RandomHealthCheck>("random", tags: new[] { "random" })
    .AddCheck<HealthyHealthCheck>("healthy", tags: new[] { "healthy" })
    .AddCheck<DegradedHealthCheck>("degraded", tags: new[] { "degraded" })
    .AddCheck<UnhealthyHealthCheck>("unhealthy", tags: new[] { "unhealthy" });

Bu, ASP.NET Core hizmetler kabında dependency injection için tüm sağlık kontrollerini kaydeder.

MapAllHealthChecks()

app.MapHealthChecks("/health");
app.MapHealthChecks("/health");

Bu, tüm hizmetleri bir arada değerlendiren tek bir /health uç noktası oluşturur. Eğer herhangi biri sağlıksızsa, tüm kontrol sağlıksız olarak döner.

Özel Sağlık Uç Noktaları Oluşturma

Bireysel bileşenleri test etmek için Tim her sağlık kontrolünü etiketle haritalar:

app.MapHealthChecks("/health/healthy", new HealthCheckOptions {
    Predicate = x => x.Tags.Contains("healthy")
});
app.MapHealthChecks("/health/healthy", new HealthCheckOptions {
    Predicate = x => x.Tags.Contains("healthy")
});

/health/degraded, /health/unhealthy ve /health/random için de aynı işlemi tekrarlar. Her biri, geliştiricilerin belirli davranışları ve ön uçların onlara nasıl tepki verdiğini test etmelerine olanak tanır.

/health/random adresini ziyaret ederken, çıktı rastgele sonuca göre "sağlıklı", "azalmış" ve "sağlıksız" arasında değişir.

Sağlık Kontrolleri için UI Desteği Ekleme

Tim, her sağlık kontrol rotası için bir UI yanıtı sağlayarak uç noktaları geliştirir. Bu, bir JSON çıktısı sağlar:

app.MapHealthChecks("/healthui", new HealthCheckOptions
{
    ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
});
app.MapHealthChecks("/healthui", new HealthCheckOptions
{
    ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
});

Bu, süre, etiketler ve durum gibi verilerle her sağlık kontrolünü incelemeye olanak tanır. Tim daha sonra her sağlık uç noktası için UI sürümleri oluşturur:

  • /healthui/healthy

  • /healthui/degraded

  • /healthui/unhealthy

  • /healthui/random

Her biri, özellikle RESTful API'ler ve mobil cihazlardan veya web sayfalarından test etmek için ideal olan ayrıntılı bir JSON formatıyla yanıt verir.

API Projesini Tamamlama

Tim, bu özelliklere rağmen Program.cs'nin yalnızca 21 satır olduğunu vurgular. Bunu şunlara bağlar:

  • İyi proje klasör yapısı

  • Modelleri Modeller klasöründe tutma

  • Uç noktaları ve denetleyicileri kendi klasörlerinde yerleştirme

  • Her sağlık kontrolü sınıfı için async Task yöntemlerini kullanma

Ayrıca, bu örnek API'nin gecikme süresi veya hataları, dağıtımdan önce simüle etmek için, üretim ortamlarında ne kadar yararlı olduğunu vurgular.

"Bu API ile daha fazla test yapabiliriz, sadece GET çağrıları yapmakla kalmaz," diyor Tim.

Sonraki Adımlar

Tim, bir sonraki derste, API davranışını daha da test etmek için yavaşlamalar (örneğin, 5 saniyelik gecikmeler) ve NotFound() ya da BadRequest() döndüren hatalar ekleyeceğini söyler.

Sonuç

Bu videoda, Tim Corey, ASP.NET Core kullanarak entegre sağlık kontrolleri olan minimal bir API oluşturma sürecini metodik olarak yürütür. Ana bileşenler şunlardır:

  • Sağlık kontrol sınıfları (Healthy, Degraded, Unhealthy, Random)

  • AddHealthChecks() aracılığıyla bağımlılık enjeksiyonu

  • MapHealthChecks() kullanarak uç noktaları haritalama

  • Yapılandırılmış JSON yanıtlarını destekleme

Bu yaklaşım, REST API'lerini doğrulamayı, hataları simüle etmeyi ve hem geliştirme hem de üretim ortamları için web uygulamalarını güçlendirmeyi kolaylaştırır.

Hero Worlddot related to Sağlık Kontrolleri Ekleme - C# Kursunda Örnek Bir API Oluşturma
Hero Affiliate related to Sağlık Kontrolleri Ekleme - C# Kursunda Örnek Bir API Oluşturma

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js ile çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara