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

Diğer Kategoriler

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

ASP.NET Core kullanarak C# dilinde RESTful API'ler geliştirme ve test etme, her modern backend geliştiricisi için pratik bir beceridir. "Sağlık Kontrollerinin Eklenmesi - C# Kursunda Örnek API Oluşturma" başlıklı öğretici videosunda, Tim Corey sağlıklı kontrolleri entegre ederek örnek bir API oluşturmayı anlatıyor. Sadece Tim'in transkripti temel alınarak yazılan bu makale, public async Task, int id, var app, ve diğer HTTP istek yöntemleri gibi anahtar noktaların ele alındığı süreci adım adım açıklar.

Tim Corey'nin Visual Studio Code kullanarak bir C# API projesinde sağlık kontrollerinin nasıl kurulduğuna daha yakından bakalım.

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

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

  • Bir veri modeli ile örnek veriler

  • API istekleri için RESTful davranışlar

  • JSON formatında yanıtlar

  • Sağlık kontrolleri

  • Hem Docker konteynerleri hem de web uygulamaları olarak dağıtım

Sağlık Kontrolleri Paketi Yükleme

Tim projeyi Visual Studio Code'da açar ve NuGet paketlerini yönetmek için Bağımlılıklar üzerine sağ tıklar. AspNetCore.HealthChecks.UI.Client paketini arar ve yükler. Bu, uygulamaya iki tür sağlık kontrolünü destekleme yeteneği kazandırır.

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

Tim, API proje klasörünün içine HealthChecks adlı yeni bir klasör ekler. Burada, IHealthCheck arabirimini uygulayan ve her biri farklı bir durumu temsil eden birden fazla sınıf oluşturur: sağlıklı, kötüleşmiş, sağlıksız ve rastgele.

HealthyHealthCheck.cs

Bu sınıf, genel bir async Taskuygulaması kullanarak HealthCheckResult.Healthy döner:

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

Bu, ön ucunuzun kararlı bir hizmeti nasıl ele aldığını test etmek için yararlıdır.

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 kötüleşmiş hizmet yanıtı döner. Kısmı arıza 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, 500 HTTP durum kodu beklediğiniz veya NotFound() döndüren 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 bunun değişken koşullar altında davranışı test etmek için yararlı olduğunu vurgular.

Başlatma Yapılandırmasında Sağlık Kontrollerini Kaydetme

Tim, Başlatma veya yapılandırma klasörüne yeni statik bir sınıf HealthChecksConfig.cs ekler. Bu sınıf iki statik yöntem içerir:

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" });

ASP.NET Core'un servis konteynerinde bağımlılık enjeksiyonu için tüm sağlık kontrollerini kaydeder.

MapAllHealthChecks()

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

Tüm servisleri birlikte değerlendiren tek bir /sağlık uç noktasını oluşturur. Eğer herhangi biri sağlıksızsa, tüm kontrol sağlıksız olarak döner.

Belirli Sağlık Uç Noktaları Oluşturma

Bireysel bileşenleri test etmek için Tim her sağlık kontrolünü tag üzerinden yönlendirir:

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

/sağlık/kötüleşmiş, /sağlık/sağlıksız ve /sağlık/rastgele için bunu tekrar eder. Her biri geliştiricilerin belirli davranışları test etmelerine ve ön uçlarının bunlara nasıl tepki verdiğini görmelerine olanak tanır.

/sağlık/rastgele ziyaret edildiğinde, çıktı "sağlıklı", "kötüleşmiş" ve "sağlıksız" arasında rastgele sonucu temel alarak değişir.

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

Tim, her sağlık kontrol yolu için UI yanıtını etkinleştirerek 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, her sağlık kontrolünü; süre, etiketler ve durum gibi verilerle incelemenize olanak tanır. Tim daha sonra her sağlık uç noktası için UI versiyonlarını oluşturur:

  • /healthui/healthy

  • /healthui/degraded

  • /healthui/unhealthy

  • /healthui/random

Her biri detaylı bir JSON formatında yanıt verir, RESTful API'ler ve mobil cihazlar veya web sayfalarından test için idealdir.

API Projesini Tamamlama

Tim, bu özelliklere rağmen Program.cs'nin hala sadece 21 satır uzunluğunda olduğunu vurgular. Bunu şu nedenlere 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, dağıtımdan önce gecikme veya hataları simüle etmek için üretim ortamlarında ne kadar kullanışlı olduğunu vurgular.

"Bu API ile sadece GET çağrıları yapmanın ötesinde çok daha fazla test yapabiliriz," diye sonuçlar Tim.

Sonraki Adımlar

Tim bir sonraki derste, API'nin davranışını daha da test etmek için simüle edilmiş yavaşlamalar (örneğin, 5 saniye gecikmeler) ve NotFound() veya BadRequest() döndürmek gibi hatalar ekleyeceğini önizler.

Sonuç

Tim Corey bu video öğreticisinde, entegre sağlık kontrolleri ile minimal bir API oluşturmayı ASP.NET Core kullanarak adım adım anlatır. Anahtar bileşenler arasında:

  • Sağlık kontrol sınıfları (Sağlıklı, Kötüleşmiş, Sağlıksız, Rastgele)

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

  • MapHealthChecks() kullanarak uç noktaların yönlendirilmesi

  • 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 API Oluşturma
Hero Affiliate related to Sağlık Kontrolleri Ekleme - C# Kursunda Örnek API Oluşturma

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

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

Iron Destek Ekibi

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