HTTP हेडर या रिस्पांस बॉडी में बाकी त्रुटि संदेश?


84

मेरे पास एक REST सेवा है जो iPhone और Android क्लाइंट के संपर्क में है। वर्तमान में मैं HTTP कोड 200, 400, 401, 403, 404, 409, 500 आदि का अनुसरण करता हूं।

मेरा प्रश्न यह है कि त्रुटि के कारण / विवरण / कारण को रखने के लिए अनुशंसित स्थान कहाँ है? क्या ऐसा लगता है कि REST API के लिए हमेशा हेडर में कस्टम रीज़न की तरह अधिक समझ है?

< HTTP/1.1 400 Bad Request - Missing Required Parameters.
< Date: Thu, 20 Dec 2012 01:09:06 GMT
< Server: Apache/2.2.22 (Ubuntu)
< Connection: close
< Transfer-Encoding: chunked

या JSON के माध्यम से रिस्पांस बॉडी में होना बेहतर है?

< HTTP/1.1 400 Bad Request
< Date: Thu, 20 Dec 2012 01:09:06 GMT
< Server: Apache/2.2.22 (Ubuntu)
< Connection: close
< Transfer-Encoding: chunked
< Content-Type: application/json
{ "error" : "Missing Required Parameters" }

6
आजकल, कस्टम हेडर को जोड़ना एक आम बात है, जैसे 'X-HTTP-Error-Description: गुम आवश्यक पैरामीटर'।
andresz

जवाबों:


96

400.x त्रुटि कोड के लिए HTTP विनिर्देशन से उद्धरण:

स्थिति कोड का 4xx वर्ग उन मामलों के लिए अभिप्रेत है जिसमें ग्राहक को मिटा दिया गया लगता है। HEAD अनुरोध का जवाब देते समय, सर्वर SHOULD में त्रुटि स्थिति की व्याख्या वाली एक इकाई शामिल होती है, और यह एक अस्थायी या स्थायी स्थिति होती है। ये स्थिति कोड किसी भी अनुरोध विधि पर लागू होते हैं। उपयोगकर्ता एजेंट SHOULD उपयोगकर्ता को किसी भी शामिल इकाई को प्रदर्शित करते हैं।

HTTP अनुक्रिया के शरीर में त्रुटि संदेश को एक इकाई के रूप में शामिल करने के लिए सबसे अच्छा अभ्यास है - चाहे वह JSON, सादा पाठ, स्वरूपित HTML, या जो भी अन्य प्रारूप आप उपयोग करना चाहते हैं।


24

शरीर में त्रुटि विवरण होना बेहतर है। इसके अलावा, कई (सबसे / लगभग सभी, उदाहरण के लिए। WSGI) सर्वर और क्लाइंट त्रुटि कोड के नाम को बदलने का समर्थन नहीं करते हैं - उन्हें निश्चित जोड़े के रूप में मानते हैं (इसलिए उदाहरण के लिए 400 हमेशा "बुरा अनुरोध" है, न कि "खराब अनुरोध" - आप उपयोगकर्ता आईडी ") निर्दिष्ट करना भूल गया। यहां तक ​​कि अगर वे नहीं टूटेंगे, तो वे विशिष्ट त्रुटि कोड के लिए आपके विशेष नाम की परवाह नहीं करेंगे।


3

त्रुटि शरीर में नहीं होती है। यह चेतावनी शीर्षक में है।

चेतावनी सामान्य HTTP हेडर में संदेश की स्थिति के साथ संभावित समस्याओं के बारे में जानकारी होती है।

संदर्भ


3
इसके लिए "आधिकारिक" शीर्ष लेख का उपयोग करना अच्छा होगा। हालाँकि, Warningजैसा कि नाम से पता चलता है, त्रुटियों के लिए नहीं है। RFC (7234) कहता है:> एक त्रुटि स्थिति कोड के बजाय एक चेतावनी का उपयोग, इन प्रतिक्रियाओं को वास्तविक विफलताओं से अलग करता है।
Frans

1
नोट: चेतावनी शीर्षक जल्द ही हटा दिया जाएगा; और अधिक विवरण के लिए चेतावनी ( github.com/httpwg/http-core/issues/139 ) और चेतावनी देखें: शीर्ष लेख और बासी-जबकि-पुनर्वित्त ( github.com/whatwg/fetch/issues/913 )।
बिज्मर्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.