SORU
21 NİSAN 2013, Pazar


Veri SONRASI için 400 vs 422 yanıt

Doğru durum kodu "diğerleri gibi" şu an üzerinde çalıştığım API. bir ile farklı senaryolar üzerinde dönmek ne olduğunu anlamaya çalışıyorum Hadi JSON formatında POST işleminin alımları veren bitiş noktası var. Bu gibi görünüyor:

{
    "account_number": 45645511
    "upc": "00490000486"
    "price": 1.00
    "tax": 0.08
}

Ben istemci bana gönderirse dönüş ne gerekir "" (yerine beklenen "") vergi. satış_vergisi Şu anda, 400 dönüyorum. Ama, bu konuda kendimi sorgulamaya başladım. Gerçekten 422 iade etmeli miyim? JSON, o da desteklenmektedir), ve gerekli tüm alanları içermez, sadece geçerli JSON, yani.

CEVAP
26 Kasım 2013, Salı


400 Hatalı İstekşimdi sizin durumunuz için en iyi HTTP durum kodu gibi görünüyor.

Sorunuzun zamanda(ve benim orijinal cevap RFC 7231 bir şey; hangi RFC 2616 benim durularak) dediği için 400 Bad Request benim karşı çıktığım nokta: değildi

İstek sunucu tarafından anlaşılamadıhatalı sözdizimi nedeniyle.

ve tarif isteği sözdizimsel olarak geçerli bir JSON sözdizimi kurallarına göre geçerli HTTP kaplı, ve böylece sunucu sorunları varsözdizimiistek.

Ancakas pointed out by Lee Saferite in the comments, RFC 7231, which obsoletes RFC 2616, does not include that restriction:

400 (hatalı İstek) durum kodunu gösteren bir server olamaz ya olmaz süreç talep nedeniyle bir şey olduğunu algılanan bir istemci hata (örneğin, hatalı biçimlendirilmiş bir istek sözdizimi, geçersiz istek mesajı çerçeve, ya da aldatıcı isteği yönlendirme).


Ancakyeniden ifade bundan önceeğer tartışmak istiyorsanız (ya da RFC 7231 tek bir varlıkönerdişu anda standart), 422 Unprocessable Entity görünmüyoryanlışKullanmanız durumunda, the introduction to RFC 4918 says: çünkü kod HTTP durum

Durum kodları HTTP/1.1 sağladığı için yeterli iken çoğu hata koşulları WebDAV yöntemleri ile karşılaştı, orada tarif bazı hatalar düzgünce varolan Kategorilere ayrılır. Bu şartname ek durum kodları WebDAV için geliştirilen tanımlar yöntemleri (Bölüm 11)

Ve the description of 422 diyor ki:

(İşlenemez bir şeyi Varlık) 422 durum kodu, sunucu anlamına gelir istek içerik türünü anlar varlık (dolayısıyla bir 415(Desteklenmeyen Ortam Türü) durum kodu uygun değil), ve istek varlığı sözdizimi doğru (böylece 400 (hatalı İstek) kod uygunsuz durum) ama işleyemedi bulunan talimatları.

(Referans sözdizimi için not; 7231 kısmen 4918 obsoletes de şüpheleniyorum

Bu seslertam olaraksenin durum gibi, ama her ihtimale karşı herhangi bir şüphe vardı, yazıyor ki:

Örneğin, bu hata koşulu XML oluşabilir istek vücut içeren iyi biçimlendirilmiş (yani, sözdizimsel olarak doğru, ama anlamsal olarak hatalı, XML talimatları.

("""JSON" ve bu durumun kabul edebiliriz sanırım) . XML ile değiştirin

Şimdi, bazı nesne RFC 4918 hakkında "HTTP Uzantıları için Web üzerinde Dağıtılmış Yazma ve Sürüm oluşturma (WebDAV)" ve sana (muhtemelen) hiçbir şey yapmadan içeren WebDAV bu kadar olmamalı bir şeyler söylenebilir.

Açıkça bu durumu telafi etmez orijinal standart bir hata kodu kullanma arasında seçim, ve durumu tam olarak açıklayan bir uzantısı verildiğine göre, ikinci seçerdim.

Ayrıca, RFC 4918 Section 21.4 422 bulunabilir IANA Hypertext Transfer Protocol (HTTP) Status Code Registry, ifade eder.

Ben bir HTTP istemci için tamamen makul veya bu kayıt herhangi bir durum kodu, yaptıkları sürece doğru şekilde kullanmak için sunucu olduğunu öneriyoruz.


Ama, 2015, RFC 7231 çekiş, bu yüzden sadece 5 ** kullanın!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • fast2hell

    fast2hell

    16 AĞUSTOS 2006
  • hotstrikegently

    hotstrikegen

    26 AĞUSTOS 2011
  • Sergio Lafuente Rubio

    Sergio Lafue

    11 Aralık 2008