400 बुरा अनुरोध अब आपके उपयोग के मामले के लिए सबसे अच्छा HTTP / 1.1 स्थिति कोड प्रतीत होगा।
आपके प्रश्न के समय (और मेरा मूल उत्तर), RFC 7231 कोई बात नहीं थी; जिस बिंदु पर मैंने आपत्ति जताई 400 Bad Request
क्योंकि RFC 2616 ने कहा (जोर देने के साथ):
अनुरोध सर्वर द्वारा विकृत सिंटैक्स के कारण समझा नहीं जा सका ।
और आप जिस अनुरोध का वर्णन करते हैं वह वाक्यविन्यास रूप से मान्य JSON है, जो कि वाक्यात्मक रूप से मान्य HTTP में संलग्न है, और इस प्रकार सर्वर में अनुरोध के वाक्य विन्यास के साथ कोई समस्या नहीं है ।
हालाँकि जैसा कि टिप्पणियों में ली सेफेराइट ने कहा है , RFC 7231, जो RFC 2616 का अनुसरण करता है, उस प्रतिबंध को शामिल नहीं करता है :
400 (खराब अनुरोध) स्थिति कोड इंगित करता है कि सर्वर किसी क्लाइंट त्रुटि के कारण होने वाली चीज़ के कारण अनुरोध को संसाधित नहीं कर सकता है या नहीं करेगा (उदाहरण के लिए, विकृत अनुरोध वाक्यविन्यास, अमान्य अनुरोध संदेश फ़्रेमिंग, या भ्रामक अनुरोध रूटिंग)।
हालाँकि, इससे पहले कि रि-वर्डिंग (या यदि आप RFC 7231 के बारे में केवल अभी एक प्रस्तावित मानक होना चाहते हैं) के बारे में जानना चाहते हैं, 422 Unprocessable Entity
तो आपके उपयोग के मामले के लिए एक गलत HTTP स्थिति कोड नहीं लगता है , क्योंकि RFC 4918 के लिए परिचय कहता है:
जबकि HTTP / 1.1 द्वारा प्रदान की गई स्थिति कोड WebDAV विधियों द्वारा सामना की गई अधिकांश त्रुटि स्थितियों का वर्णन करने के लिए पर्याप्त है, कुछ त्रुटियां हैं जो मौजूदा श्रेणियों में बड़े करीने से नहीं आती हैं। यह विनिर्देश WebDAV विधियों (धारा 11) के लिए विकसित अतिरिक्त स्थिति कोड को परिभाषित करता है
और के विवरण422
का कहना है:
422 (Unprocessable Entity) स्थिति कोड का अर्थ है कि सर्वर अनुरोध इकाई की सामग्री प्रकार को समझता है (इसलिए 415 (असमर्थित मीडिया प्रकार) स्थिति कोड अनुचित है), और अनुरोध इकाई का सिंटैक्स सही है (इस प्रकार 400 (खराब अनुरोध) ) स्थिति कोड अनुचित है) लेकिन निहित निर्देशों को संसाधित करने में असमर्थ था।
(सिंटैक्स के संदर्भ पर ध्यान दें; मुझे संदेह है कि 7231 आंशिक रूप से 4918 का भी पालन करता है)
यह बिल्कुल आपकी स्थिति की तरह लगता है, लेकिन सिर्फ मामले में कोई संदेह था, यह कहने के लिए जाता है:
उदाहरण के लिए, यह त्रुटि स्थिति तब हो सकती है जब किसी XML अनुरोध बॉडी में अच्छी तरह से गठित (यानी, वाक्यविन्यास रूप से सही) हो, लेकिन शब्दार्थ गलत, XML निर्देश।
("JSON" के साथ "XML" बदलें और मुझे लगता है कि हम सहमत हो सकते हैं कि आपकी स्थिति है)
अब, कुछ को आपत्ति होगी कि RFC 4918 "HTTP एक्सटेंशन्स फॉर वेब डिस्ट्रिब्यूटेड ऑथरिंग एंड वर्जनिंग (WebDAV)" के बारे में है और आप (संभवतया) WebDAV से जुड़े कुछ भी नहीं कर रहे हैं, इसलिए इससे चीजों का उपयोग नहीं करना चाहिए।
मूल मानक में एक त्रुटि कोड का उपयोग करने के बीच की पसंद को देखते हुए जो स्पष्ट रूप से स्थिति को कवर नहीं करता है, और एक एक्सटेंशन से जो स्थिति का सटीक वर्णन करता है, मैं बाद वाला चुनूंगा।
इसके अलावा, RFC 4918 धारा 21.4 IANA हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल (HTTP) स्टेटस कोड रजिस्ट्री को संदर्भित करता है , जहाँ 422 मिल सकते हैं।
मेरा प्रस्ताव है कि HTTP क्लाइंट या सर्वर के लिए उस रजिस्ट्री से किसी भी स्टेटस कोड का उपयोग करना पूरी तरह से उचित है, जब तक कि वे सही तरीके से ऐसा नहीं करते हैं।
लेकिन HTTP / 1.1 के अनुसार, RFC 7231 में कर्षण है, इसलिए बस उपयोग करें 400 Bad Request
!