Uygulama katmanı
Controller ve minimal API
Aynı işi yapan iki yazım biçimi ve ince controller kuralı.
Kavramı anlayalım
ASP.NET Core’da endpoint’ler iki biçimde yazılabilir. Controller’lar, ilgili uçları bir sınıfta toplar, attribute’larla rota ve davranış tanımlar ve [ApiController] ile otomatik model doğrulaması, ProblemDetails gibi kolaylıklar sunar. Minimal API’ler ise MapGet, MapPost gibi çağrılarla uçları doğrudan Program.cs’de veya gruplanmış uzantı metotlarında tanımlar; daha az tören, daha hızlı başlangıç sunar.
Hangisini seçtiğinden bağımsız olarak endpoint ‘ince’ olmalıdır. Görevi HTTP’yi anlamaktır: girdiyi almak, işi uygulama katmanına vermek ve sonucu doğru HTTP yanıtına çevirmek (200, 201, 204, 404…). İş kuralları, veritabanı sorguları ve e-posta gönderimi gibi işler endpoint’te değil servislerde yaşar.
Bu ayrım test etmeyi kolaylaştırır: iş kuralı HTTP olmadan birim testle denenebilir. Ayrıca aynı iş kuralı başka bir girişten (arka plan işi, mesaj kuyruğu) kullanılmak istendiğinde kopyalanmaz.
İnce endpoint’ler, iş kurallarını test edilebilir ve yeniden kullanılabilir tutar.
Controller metodunun içine sorgu, doğrulama, e-posta ve loglamayı doldurup 200 satırlık bir metot yazmak.
Aynı konu. Üç farklı derinlik.
app.MapGet("/api/health", () => Results.Ok(new { status = "ok" }));Minimal API ile tek satırlık bir endpoint.
Bu sayfa gerçek bir sunucuya veya veritabanına bağlanmaz. Kod örnekleri .NET 8, Next.js ve SQL Server için temsilîdir; süreler simülasyondaki örnek değerlerdir, ölçüm değildir. Örnekleri yalnız kendi geliştirme ortamında dene; gerçek bağlantı dizesi, token veya parola paylaşma.
Önce kendin dene.
Bir controller metodu sipariş toplamını hesaplıyor, indirim uyguluyor, veritabanına yazıyor ve e-posta gönderiyor. İndirim kuralını test etmek için neyi değiştirirsin?
Çözümü ve açıklamasını göster
İndirim hesabını saf bir sınıfa/metoda taşı (ör. PricingService.ApplyDiscount)
ve birim testle dene. Controller yalnız servisi çağırır ve sonucu HTTP’ye çevirir.
E-posta ve veritabanı arayüzlerin arkasına alınır.HTTP ve dış bağımlılıklardan arındırılmış iş kuralı hızlı ve güvenilir biçimde test edilir.