400 Hatalı İstek artık kullanım durumunuz için en iyi HTTP / 1.1 durum kodu gibi görünmektedir.
Sorunuz sırasında (ve orijinal cevabım), RFC 7231 bir şey değildi; bu noktada itiraz ettim 400 Bad Request
çünkü RFC 2616 (benimkini vurgulayarak):
İstek, hatalı biçimlendirilmiş sözdizimi nedeniyle sunucu tarafından anlaşılamadı .
ve açıkladığınız istek sözdizimsel olarak geçerli olan JSON sözdizimsel olarak geçerli HTTP ile kaplıdır ve bu nedenle sunucunun isteğin sözdizimiyle ilgili bir sorunu yoktur .
Ancak Lee Saferite'nin yorumlarda belirttiği gibi , RFC 2616'yı geçersiz kılan RFC 7231, bu kısıtlamayı içermez :
400 (Hatalı İstek) durum kodu, sunucunun, istemci hatası olarak algılanan bir şey (örneğin, hatalı biçimlendirilmiş istek sözdizimi, geçersiz istek iletisi çerçeveleme veya aldatıcı istek yönlendirmesi) nedeniyle isteği işleyemeyeceğini veya işlemeyeceğini gösterir.
Bununla birlikte, bu yeniden ifade etmeden önce (veya şu anda sadece önerilen bir standart olan RFC 7231 hakkında tartışmak istiyorsanız), kullanım durumunuz için yanlış bir HTTP durum kodu 422 Unprocessable Entity
gibi görünmemektedir , çünkü RFC 4918'e girişin dediği gibi:
HTTP / 1.1 tarafından sağlanan durum kodları, WebDAV yöntemlerinin karşılaştığı çoğu hata koşulunu tanımlamak için yeterli olsa da, mevcut kategorilere düzgün bir şekilde girmeyen bazı hatalar vardır. Bu belirtim WebDAV yöntemleri için geliştirilen ek durum kodlarını tanımlar (Bölüm 11)
Ve açıklaması422
:
422 (İşlenemeyen Varlık) durum kodu, sunucunun istek varlığının içerik türünü anladığı (bu nedenle 415 (Desteklenmeyen Medya Türü) durum kodu uygun değildir) ve istek varlığının sözdiziminin doğru olduğu (dolayısıyla 400 (Hatalı İstek) anlamına gelir. ) durum kodu uygun değil) ancak içerdiği talimatları işleyemedi.
(Sözdizimine yapılan referansa dikkat edin; 7231'in 4918'in de kısmen eskimiş olduğundan şüpheleniyorum)
Bu tam olarak sizin durumunuza benziyor, ancak herhangi bir şüphe olması durumunda şöyle devam ediyor:
Örneğin, bir XML istek gövdesi iyi biçimlendirilmiş (yani sözdizimsel olarak doğru), ancak anlamsal olarak hatalı XML talimatları içeriyorsa bu hata koşulu oluşabilir.
("XML" yerine "JSON" yazın ve durumunuzun bu olduğunu kabul edebileceğimizi düşünüyorum)
Şimdi, bazıları RFC 4918'in "Web Dağıtılmış Yazma ve Sürüm Oluşturma (WebDAV) için HTTP Uzantıları" hakkında olduğunu ve (muhtemelen) WebDAV ile ilgili hiçbir şey yapmadığınızı itiraz edecektir, bu yüzden ondan bir şeyler kullanmamalısınız.
Orijinal standartta açıkça durumu kapsamamakta olan bir hata kodu kullanma ve durumun tam olarak açıklandığı bir uzantıdan biri arasındaki seçim göz önüne alındığında, ikincisini seçerim.
Ayrıca, RFC 4918 Bölüm 21.4 , 422'nin bulunabileceği IANA Köprü Metni Aktarım Protokolü (HTTP) Durum Kodu Kayıt Defterine atıfta bulunur.
Bir HTTP istemcisinin veya sunucusunun, doğru bir şekilde yaptıkları sürece, bu kayıt defterindeki herhangi bir durum kodunu kullanmasının tamamen makul olduğunu öneriyorum.
Ancak HTTP / 1.1'den itibaren, RFC 7231'in çekişi vardır, bu yüzden sadece kullanın 400 Bad Request
!