Dayanıklılık ve hata yönetimi
Problem Details ve hata sözleşmesi
İstemciye anlaşılır, güvenli hata ver.
Kavramı anlayalım
Problem Details standart bir hata temsil biçimidir. type problem türünü tanımlar, title kısa başlık, status HTTP kodu, detail bu olaya ilişkin güvenli açıklama ve instance olay kaynağı olabilir. Extension alanları requestId veya validation listesi gibi sözleşmeler ekleyebilir.
HTTP status ile body status tutarlı olmalıdır. Kullanıcıya actionable mesaj ver ama stack trace, SQL veya secret dışarı çıkarma. Sunucu logunda trace ID ile ayrıntıyı bul; body’ye yalnız güvenli korelasyon bilgisi koy.
Client yalnız İngilizce title metnini eşitleyerek kontrol akışı kurmamalı; stabil type/error code sözleşmesini kullanmalı. Validation ve yetki hatasını aynı tek belirsiz mesaja indirgemeden güvenlik sınırını koru. ASP.NET exception middleware’i bu temsili merkezi üretmek için kullanılabilir; mevcut sistem burada değiştirilmez, öğretim yapılır.
Frontend hata mesajı ve backend gözlemini bağlamak için.
Stack trace’i kullanıcıya hata detayı diye göndermek.
Aynı konu. Üç farklı derinlik.
Content-Type: application/problem+jsonProblem temsil türü.
Bu sayfa dış sunuculara istek göndermez. HTTP mesajları temsili, HTTP/1.1 biçiminde okunabilir gösterimlerdir; HTTP/2 ve HTTP/3 wire formatı değildir. example.test ayrılmış öğretim alan adıdır. Komut ve JavaScript örneklerini yalnız kendi test ortamında uygula; gerçek token veya cookie yayımlama.
Önce kendin dene.
Client akışını title === "Validation failed" ile kurmak iyi mi?
Çözümü ve açıklamasını göster
Stable type/code → localised messageHayır; stabil kod/tür ve locale mesajını ayır.