Yavaşlamalar ve Hata Kodları Eklemek - C# Kursunda Örnek API İnşası
Modern uygulamalar inşa ederken ve test ederken, özellikle web ön yüzleri olanlarda, geliştiriciler çoğu zaman gerçek dünya senaryolarını simüle etme ihtiyacı duyarlar, bunlar API gecikmeleri ve beklenmeyen hata yanıtları gibi. Bunu desteklemek için Tim Corey, "Yavaşlama ve Hata Kodları Ekleme - C# Kursunda Örnek API Oluşturma" adlı kurs dersinde son derece pratik bir walkthrough sunar. Bu videoda Tim, minimal bir C# API'sini yapay gecikmeler ve özel hata yanıtları ile zenginleştirme — test sırasında ideal olmayan durumları simüle etmek için paha biçilmez araçlar, nasıl yapılacağını gösterir.
Bu makalede, Tim'in videoda gösterdiği kavramlar ve uygulamaların üzerinden geçeceğiz.
Örnek API'ye Giriş ve Amacı
Tim, dersin başında web geliştirme öğrenirken bir örnek API'ye sahip olmanın değerini tekrarlıyor. Böyle bir API, ön uç uygulamalarınızı test etmek için somut bir şey sunar.
Kursun sonunda, Tim aşağıdakileri içerecek sağlam bir API inşa etmeyi hedefliyor:
Örnek veriler
Dokümantasyon
- Sağlık kontrolleri
Simüle edilmiş yavaşlamalar
Simüle edilmiş hatalar
Docker ve VPS aracılığıyla dağıtım seçenekleri
Bu özel derste Tim, API'nin olumsuz koşullar altında gerçekçi davranışı için gecikmeleri simüle etmeye ve hata kodları üretmeye odaklanıyor.
API Uç Noktalarına Yapay Gecikmeler Ekleme
Tim, dersin başında belirli API uç noktalarına — özellikle ders verileriyle ilgilenenlere — isteğe bağlı bir gecikme parametresi ekliyor. Amacı, ön uç testi için yavaş API yanıtlarını simüle etmektir.
Uygulama Detayları:
Gecikme parametresi milisaniyeleri temsil eden boş olabilen bir tam sayıdır.
Bunu ele almak için Tim, uç nokta yöntemlerini yalnızca IResult döndürmek yerine Task
Eğer bir gecikme sağlanmış ve kabul edilebilir sınırlar içinde (300.000 milisaniye ya da 5 dakikayı aşmayan) ise, yöntem Task.Delay() çağırarak yürütmeyi duraklatır.
2:33'te Tim, gecikmenin sınırlandırılmasının önemini vurgular. Uygulamanın yanıt vermemesine veya bozuk görünmesine neden olabilecek makul olmayan bekleme sürelerini önlemek için sınırı 5 dakika olarak belirler.
if (delay > 300000)
{
delay = 300000;
}
await Task.Delay(delay.Value);if (delay > 300000)
{
delay = 300000;
}
await Task.Delay(delay.Value);Bu ekleme, geliştiricilerin zaman aşımlarını ve istemci uygulamasında yanıt verebilirliği test etmek için beş dakikaya kadar gecikmeleri simüle edebilmesini sağlar.
Gecikme Mekanizmasını Test Etme
Tim, gecikme mantığını doğrulamak için Postman (veya bir Postman klonu) kullanarak birkaç test yapar. Örneğin:
Gecikme=5000 (5 saniye) API'nin yanıtları döndürmeden önce duraklamasına neden olur.
Gecikme=500, daha kısa bir duraklamaya neden olur.
Tim, işlem yükü nedeniyle belirtilen değer her zaman biraz daha uzun süreceği için gerçek gecikmenin her zaman biraz daha uzun olacağını gözlemler - gerçek dünya bir ayrıntısı. Tim'in 5:09'da belirttiği gibi, API'yi milisaniye düzeyinde zamanlamıyorsunuz, aksine bir eşik simüle ediyorsunuz.
Daha Fazla Uç Noktaya Gecikme İşlevselliğini Genişletme
Tim sadece "tüm kursları yükle" uç noktasıyla durmaz. Tutarlılık istiyor, bu yüzden "ID'ye göre kurs yükle" uç noktasında aynı gecikme özelliğini uygular.
6:15'te bir pürüzle karşılaşır: asenkron yapıya dönüştürüldüğünde yönteme otomatik olarak "Async" eklenmesi nedeniyle bir adlandırma çakışması. Tim, hem yöntem adlarını netlik ve tutarlılık için Async adlandırma kuralına uyacak şekilde ayarlar.
Testler uygulamanın doğruluğunu teyit eder:
Gecikmelere uyulur.
Var olmayan kayıtlar gecikmeden sonra beklenen 404 döndürüyor.
Gecikme kaldırıldığında veya boş değerler geçtiğinde uygun bir şekilde davranır, Tim bunun Postman'de bir UI garipliği olduğunu, API'nin kendisinde bir sorun olmadığını not eder (8:00).
Özel Hata Yanıtları Ekleme
Sonra Tim, API testleri için değerli bir araç olan çeşitli HTTP hata kodlarını simüle edebilen özel bir uç nokta tanıtır.
9:13'te, bazı uç noktaların (ID ile bir kurs döndüren gibi) eksik veriler için doğal olarak 404 döndürdüğünü, ancak diğer hata kodlarını test etmek için yerleşik bir yol bulunmadığını - açıkça simüle edilmedikçe - açıklar.
Tim /error/{code} adresinde yeni bir uç nokta inşa eder:
Bir tam sayı HTTP durum kodunu kabul eder.
Switch ifadesi kullanarak karşılık gelen HTTP hata yanıtını döndürür.
code switch
{
400 => Results.BadRequest(),
401 => Results.Unauthorized(),
403 => Results.Forbid(),
404 => Results.NotFound(),
_ => Results.StatusCode(code)
};code switch
{
400 => Results.BadRequest(),
401 => Results.Unauthorized(),
403 => Results.Forbid(),
404 => Results.NotFound(),
_ => Results.StatusCode(code)
};Bu, geliştiricinin test etmek isteyebileceği yaygın istemci tarafı hataları ve herhangi bir özel kodu kapsar.
12:03'te bu yeni uç noktayı app.AddErrorEndpoints() yoluyla programa ekler ve hata sınıfını statik olarak işaretler.
Hata Uç Noktasını Test Etme
Tim şimdi çeşitli durum kodları geçirerek hata uç noktasını test ediyor:
400 "Hatalı İstek" döndürüyor
401 "Yetkisiz" döndürüyor
404 "Bulunamadı" döndürüyor
301 "Kalıcı Olarak Taşındı" döndürüyor
405 "Yönteme İzin Verilmedi" döndürüyor
Bu uç noktanın esnekliğini gösteriyor - yalnızca hata kodları için değil, herhangi bir HTTP durum kodu. 13:04'te Tim, bu yaklaşımın ön uç uygulamalarının farklı sunucu yanıtlarını nasıl ele aldığını test etmek için ideal olduğunu doğrular.
Bunu /httpcode olarak adlandırmayı düşünse de, esas olarak hata koşullarını simüle etmek için kullanıldığı için basitlik adına /error ile devam ediyor.
İşlevsel İyileştirmelerin Özeti
Tim videonun sonunda API'ye yapılan iyileştirmeleri özetleyerek kapatır:
Yavaşlamalar API yanıtlarındaki gerçek dünya gecikmelerini simüle eder.
Hata simülasyonu neredeyse herhangi bir HTTP yanıtına karşı test yapmak için esneklik sağlar.
Bu özellikler, örnek API'yi daha sağlam ve gerçekçi test senaryoları için değerli kılar.
14:16'da Tim, uygulamanızın farklı API durumları altında nasıl davrandığını test etmenin bu araçların önemini vurgular, bunlar arasında gecikmiş yanıtlar veya çeşitli sunucu hataları da bulunur.
Sıradaki Ne: API'yi Dockerlaştırma
Bu videoda detaylı olarak ele alınmasa da, Tim bir sonraki adım olarak API'yi Dockerlaştırmayı anlatıyor. Bu, geliştiricilerin örnek API'yi kendi kendine yeten bir Docker konteyneri içinde yerel olarak çalıştırmalarını sağlar, böylece farklı ortamlara dağıtıp paylaşmayı kolaylaştırır.
Son Düşünceler
Tim, videoyu kapatırken geliştiricilerin gerçekten karşılamak zorunda oldukları gerçekçi özellikler içeren, kapsamlı bir örnek API oluşturma taahhüdünü yineler. Bunlar arasında:
Gecikmeler
Hatalar
- Sağlık kontrolleri
Gelecek planlayan kimlik doğrulama ve gelişmiş uç noktalar
Amaç basittir ama güçlüdür - geliştiricilere, gerçek API'lerin karakteristiklerini taklit eden bir araç sunarak, böylece uygulamalarının sağlam, güvenilir ve kullanıcı dostu olmasını sağlamak.
Sonuç
Bu dersin sonunda izleyiciler, kendi API'lerinde yapay gecikmeler ve hata yanıtları tanıtmanın nasıl ve neden yapılacağına dair daha iyi bir anlayışa sahip olacaklar. Tim Corey'nin yaklaşımı metodik, pratik ve doğrudan gerçek dünya uygulama test ihtiyacına bağlıdır. API test yeteneklerinizi geliştirmek istiyorsanız, bu ders izlemek için mükemmel bir kaynaktır - ve şimdi tam olarak nerede arayacağınızı biliyorsunuz.
Tim Corey'nin uygulamalı rehberlik hakkında tam video dersini izleyin.

