Ben bir istemci (bir tarayıcıda JS) bir sunucu ile konuşmak için bazı API tasarımı ile kavşak biraz. Geçerli bir güvenlik kilidi nedeniyle bir eylemin başarısız olduğunu göstermek için HTTP 409 Çakışması'nı kullanıyoruz. Satefy kilidi, geliştiricilerin müşterilerimizin üretim sistemlerinde yanlışlıkla değişiklik yapmasını önler. Belirli bir API çağrısının neden başarısız olduğunu belirtmek için istemcide 409'ları biraz daha zarif bir şekilde ele almakla görevlendirildim.
Benim çözümüm, 409 nedeniyle bir şey başarısız olduğunda istemcide bir bildirim gösterecek AJAX çağrılarımızdan herhangi birinin hata işleyicilerini sarmaktı - bu iyi ve aynı mekanizmayı kullanan diğer 4XX ve 5XX hatalarının yanında iyi çalışıyor.
Rota işleyicilerimizden birinin bir iş mantığı hatasıyla karşılaştığında 409'larla yanıt verdiği bir sorun ortaya çıktı - AJAX paketleyicim güvenlik kilidinin açık olduğunu bildirirken, müşterinin mevcut arıza işleyicisi sorunun gövdeye bağlı olduğunu (düşündüğünü) bildiriyor yanıt. Basit bir çözüm, işleyicinin yanıtını veya güvenlik kilidini temsil etmek için kullandığımız durum kodunu değiştirmek olacaktır.
Bu da beni kavşağa getiriyor: HTTP durum kodları iş mantığı hatalarını temsil etmek için bile kullanılmalı mı? Bu soru , karşılaştığım aynı sorunu ele alıyor, ancak fazla çekişmedi. Bağlantılı cevapta önerildiği gibi, iş mantığı içinde hatayı temsil etmek için uygun bir gövdeli HTTP 200 OK kullanmaya doğru eğildim.
Burada güçlü bir fikri olan var mı? Biri beni başarısızlığı temsil etmenin yanlış yolu olduğuna ikna edebilir mi?
400 Bad Request
bir battaniye HTTP kodu bir sınıf olarak iş mantığı hatalarını kapsayacak şekilde en iyisidir.
400 Bad Request
veri eksik olduğunda veya okunamıyor / ayrıştırılamıyorsa kullanmaya eğilimliyim . Yani istek verilerinin kendisi bir şekilde kötü.
400 Bad Request
. Bu ayrılmanın nedeni, gelecekteki sistemlerin, geliştiricilerin veya okuyucuların dünya çapında standart sapmanızla karıştırılabilmesidir.