COMPUTER ENGINEER

Örneklere git
Blog
Next.js / ASP.NET Core / SQL6 dk çalışma
18/ 41

Uygulama katmanı

Controller ve minimal API

Aynı işi yapan iki yazım biçimi ve ince controller kuralı.

AnlaÖrneği inceleKendin uygula

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.

NERESİNDE KULLANIRSIN?

İnce endpoint’ler, iş kurallarını test edilebilir ve yeniden kullanılabilir tutar.

SIK YAPILAN HATA

Controller metodunun içine sorgu, doğrulama, e-posta ve loglamayı doldurup 200 satırlık bir metot yazmak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

Temsili örnek
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.

02 / SIRA SENDE

Ö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
Açıklamalı çözüm
İ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.