Bios.Web.Problems 0.2.0
Bios.Web.Problems
Hata cevapları için tek biçim: RFC 9457 problem+json. İstemci karar verirken makine koduna bakar, kullanıcıya gösterirken sunucunun gönderdiği başlığı kullanır. Metin sunucuda durduğu için ikinci bir dil eklemek istemciye dokunmaz.
Kod bir enum'dur ve ürüne aittir; bu paket yalnız mekanizmayı taşır. Enum adı
snake_case'e çevrilir: NameRequired telde name_required olur. Başlık,
ürünün resource dosyasından, isteğin Accept-Language değerine göre çözülür.
Bağlama
// acilista: hangi resource dosyasi basliklari verecek, ve hata URN'leri
// hangi isim alani altinda yayinlanacak
services.AddBiosProblems<ErrorResource>(urnNamespace: "acme");
// endpoint'te:
return http.Problem(ErrorCode.NameRequired, StatusCodes.Status400BadRequest);
Cevap şöyle çıkar:
{
"type": "urn:acme:error:name_required",
"code": "name_required",
"status": 400,
"title": "Unvan boş bırakılamaz."
}
Alan bazlı ayrıntı gerekiyorsa extensions sözlüğüyle ek üyeler eklenir;
RFC buna izin verir.
İki nokta
urnNamespace zorunludur ve varsayılanı yoktur. type alanı ürünün
dış sözleşmesidir — istemciler ona göre dallanır. Paketin buraya bir
varsayılan koyması, bir ürünün hatalarını başka bir ürünün adıyla yayınlaması
demek olurdu. Değer verilmezse ya da URN'de kullanılamayacak karakterler
taşıyorsa uygulama açılışta durur.
AddLocalization çağırmanıza gerek yok, bu metot onu kendisi yapar.
Yerelleştirme mekanizmanın ön koşuludur ve derleyicinin göremediği türden bir
ön koşuldur: unutulduğunda kod sorunsuz derlenir, uygulama ilk isteğe kadar
bile gelemez. O yüzden burada kurulur. Kendiniz de çağırdıysanız bir şey
kaybetmezsiniz, çağrı zaten tekrara dayanıklıdır.
No packages depend on Bios.Web.Problems.
.NET 10.0
- No dependencies.