ASP.NET Core

Minimal API'de sipariş iş akışı için doğru HTTP durum kodları

Bir depo sipariş API'si, geçersiz durum geçişleri, yetersiz stok, eski ETag'li yazmalar ve bozuk JSON gibi istekleri nasıl reddetmeli? Yazar, .NET 10 Minimal API ve EF Core 10 ile yaptığı örnekte her durum için 409, 412 ve 400 kullanımını ve tekrar eden ship isteğinin neden 200 dönmesi gerektiğini anlatıyor. Hata yönetimi tasarlayan her geliştirici için pratik bir rehber.

DEV Community: #aspnetcore MICHAEL-MAURICE
Yayın tarihi
Okuma süresi
9 dk okuma
agent çalıştırması #11
agent çalıştırması #11
Orijinale git dev.to

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • Geçersiz durum geçişi 409 döner ve yanıt, o durumda izin verilen işlemleri (allowedActions) listeler.
  • Stok, bir satırı rezerve etmeden önce tüm satırlar için kontrol edilir; hata SKU, istenen ve mevcut miktarı içerir.
  • If-Match header'ı eski bir sürümü gösterirse 412 Precondition Failed dönülür; bu, 409'dan farklı bir istemci davranışı gerektirir.
  • Aynı takip numarasıyla gelen tekrar ship isteği 200 döner ve veri yazılmaz; farklı takip numarası 409 alır.
  • Miktar alanı için int? ve [Required] kullanılarak eksik alan 0 yerine 400 olarak reddedilir.
  • Bozuk JSON, UseExceptionHandler içinde BadHttpRequestException'ın durum kodu korunarak 400 olarak dönmeli.

Bu yazı, bir depo sipariş API'sinin reddetmesi gereken altı isteği ve her biri için dönülmesi gereken HTTP durum kodunu ele alıyor. Yazar, sipariş yaşam döngüsünü bir durum makinesi olarak modelliyor; izin verilmeyen bir işlem 409 ile yanıtlanıyor ve yanıt, o durumda yapılabilecek işlemlerin listesini taşıyor. Stok kontrolü tüm satırlar için yeniden yapılmadan önce yapılıyor, eşzamanlılık için bin kayıtlarında version sütunu ve sınırlı yeniden deneme kullanılıyor.

Diğer kurallar da net: ETag'li eski bir If-Match isteği 412 alıyor, aynı takip numarasıyla tekrar gelen ship isteği ise 200 ile sessizce kabul ediliyor. Quantity alanı eksikse int? ve [Required] ile 400 dönülüyor; bozuk JSON'un 500 yerine 400 dönmesi için de UseExceptionHandler'ın StatusCodeSelector ayarı gerekiyor. Yazar ayrıca Development ortamında en az bir entegrasyon testi çalıştırmayı öneriyor.

Gerçek dünyada kullanımı

  • Depo el terminali uygulamasında toplama, paketleme ve sevkiyat adımlarını birbirine karışmadan yöneten bir sipariş API'si.
  • Aynı ürün için eşzamanlı rezervasyon yapan çok kanallı bir e-ticaret arka ucu.
  • Mobil istemcilerden gelen tekrar deneme (retry) isteklerinin çift işlem yaratmaması gereken iş akışı endpoint'leri.

Neden önemli

Durum kodlarını doğru seçmek, istemcinin hatayı nasıl ele alacağını belirler: 412 yeniden yükleme, 409 iş kuralı çakışması, 200 ise başarılı bir tekrar anlamına gelir. Geliştiriciler için bu, destek ekiplerinin 500 hatalarıyla boğuşmasını önleyen somut bir kontrol listesi.

Bu özet, DEV Community: #aspnetcore üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü