COMPUTER ENGINEER

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

Uygulama katmanı

Doğrulama ve ProblemDetails

Hataları tutarlı, makine tarafından okunabilir ve güvenli biçimde döndürmek.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

Doğrulamanın iki türü vardır. Biçim doğrulaması girdinin şeklini kontrol eder: zorunlu mu, uzunluğu uygun mu, e-posta biçiminde mi. Bu iş veri açıklamaları ([Required], [MaxLength], [EmailAddress]) ile model binding sırasında yapılır ve [ApiController] hatalı isteği otomatik olarak 400 ile döndürür. İş doğrulaması ise kuralları kontrol eder: bu slug zaten kullanılıyor mu, bu kullanıcı bu kaynağın sahibi mi. Bu kontroller servis katmanında yapılır.

Hata yanıtları için RFC 9457 ‘Problem Details’ standardı kullanılır: type, title, status, detail ve isteğe bağlı ek alanlar. Doğrulama hatalarında ‘errors’ nesnesi alan bazlı mesajları taşır; istemci bunları ilgili form alanlarının yanında gösterebilir. traceId, kullanıcı bir hata bildirdiğinde ilgili log kaydını bulmayı sağlar.

Durum kodu doğru seçilmelidir: biçim hatası 400, çakışma (aynı slug) 409, bulunamayan kaynak 404. Hata mesajları kullanıcıya ne yapacağını söylemeli ama iç ayrıntıyı (SQL, yığın izi, dosya yolu) asla sızdırmamalıdır.

NERESİNDE KULLANIRSIN?

Tutarlı hata biçimi istemci kodunu basitleştirir ve destek sürecini hızlandırır.

SIK YAPILAN HATA

Her hatayı 200 ve { success: false } ile döndürmek; önbellekler, izleme araçları ve istemciler bunu başarı sanır.

CANLI ANİMASYON

Bir mektubun şehirdeki yolculuğu

İsteği bir mektup, sunucuyu bir şehir gibi düşün. Senaryo seç, oynat ve mektubun hangi kapıdan geçip nerede durdurulduğunu izle.

İSTEMCİKENARWEB SUNUCUSUAPI · ASP.NET COREVERİTarayıcıKullanıcının ekranıAğDNS · TCP · TLSTers vekilTLS sonlandırma, sıkıştırmaNext.js sunucusuSSR ve route handlerKestrelHTTP sunucusuHata yakalayıcıMiddlewareRoutingEndpoint seçimiHız sınırıMiddlewareKimlik doğrulamaKim olduğunYetkilendirmeNeye izin varModel bindingHTTP → C# + doğrulamaControllerEndpoint koduServisİş kuralları (DI)RedisDağıtık önbellekEF CoreLINQ → SQLSQL ServerSorgu planı, indeks
GİDİŞ →

İletişim formu gönderiliyor ama e-posta alanına ‘ayse-at-ornek’ yazılmış.

TarayıcıSenin ekranın. İsteği yazan ve sonunda cevabı sayfaya çeviren yer.
1 / 4
01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

Temsili örnek
public sealed record CreatePost(
    [Required, MaxLength(160)] string Title,
    [Required, RegularExpression("^[a-z0-9-]+$")] string Slug);

Biçim kuralları istek modelinin üzerinde durur.

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 yazı oluşturma isteği gelir: başlık boş ve slug başka bir yazıda kullanılıyor. Hangi hata önce, hangi durum koduyla dönmeli?

Çözümü ve açıklamasını göster
Açıklamalı çözüm
Önce biçim doğrulaması çalışır: boş başlık → 400 (ValidationProblemDetails, errors.Title).
İstek controller’a ulaşmadığı için slug çakışması kontrol edilmez.
Başlık düzeltilip tekrar gönderilince slug çakışması → 409.

Biçim doğrulaması model binding sırasında, iş doğrulaması servis içinde yapılır; sıralı olduklarından ilk hata yanıtı belirler.