2012-03-07 11 views
14

परिदृश्य:HTTP स्थिति कोड

एक POST अनुरोध एक आदेश है कि एक बाहरी डेटा स्रोत से डेटा पुनर्प्राप्ति में परिणाम होगा पर कार्रवाई करने के लिए भेजा जाता है।

रहे हैं तीन संभावित परिणाम:

  1. डेटा स्रोत अनुरोध
  2. कोई डेटा अनुरोध के लिए उपलब्ध था (यह एक त्रुटि के रूप में देखा जाता है)
  3. डेटा स्रोत नहीं हो सकता है के लिए डेटा नहीं दिया पहुँचा (रखरखाव के लिए बंद किया जा सकता है)

के लिए एक स्पष्ट प्रतिक्रिया 200: OK याहै(इस अनुरोध से एक इकाई बनाई गई है)।

और के लिए कौन सा स्थिति कोड उचित होगा?

स्थिति कोड मैं पर विचार किया है:

  • 503: Service Unavailable डेटा स्रोत नीचे
  • 500: Internal Server Error है जब जब डेटा स्रोत नीचे
  • 502: Bad Gateway है जब "कोई डेटा उपलब्ध नहीं"
  • 404: Not Found जब "कोई डेटा उपलब्ध नहीं"
  • 403: Forbidden जब "कोई डेटा उपलब्ध नहीं है"
  • 412: Precondition Failed जब "कोई डेटा उपलब्ध नहीं"
+0

क्या आप POST अनुरोध का उपयोग कर डेटा पूछने का प्रयास कर रहे हैं? क्या आप जीईटी विधि का उपयोग नहीं करना चाहिए? –

+2

'GET' उपयुक्त नहीं है क्योंकि ये डेटा प्रश्न न तो सुरक्षित हैं और न ही बेवकूफ हैं (वे अन्य चीजों के बीच धन का आदान-प्रदान कर सकते हैं)। –

उत्तर

8

2) इस पर वापस देख रहे हैं, मैं मानता हूँ यह शायद या तो एक 204 होना चाहिए कोई सामग्री या हो सकता है एक शरीर कोई रिकॉर्ड या संसाधनों का संकेत के साथ एक 200 के आधार पर पाया जा सकता है संरचना वापस आ गई। 404 का आमतौर पर उपयोग किया जाता है जब संसाधन यूआरआई मौजूद नहीं होता है या यूआरआई में संसाधन एक आरामदायक सेवा के मामले में नहीं मिलता है।

3) 503 सेवा अनुपलब्ध

सर्वर में कोई अस्थायी अधिक भार या सर्वर के रखरखाव के कारण अनुरोध को पूरा करने में असमर्थ है। निहितार्थ यह है कि यह एक अस्थायी स्थिति है जिसे कुछ देरी के बाद कम किया जाएगा। यदि ज्ञात है, तो विलंब की लंबाई को पुनः प्रयास-बाद वाले शीर्षलेख में इंगित किया जा सकता है। यदि कोई पुनः प्रयास नहीं किया जाता है, तो ग्राहक को प्रतिक्रिया को संभालना चाहिए क्योंकि यह 500 प्रतिक्रिया के लिए होगा।

Note: The existence of the 503 status code does not imply that a 
    server must use it when becoming overloaded. Some servers may wish 
    to simply refuse the connection. 
+1

यदि इस संसाधन पर सर्वर द्वारा अनुरोध स्वीकार किया जाता है, लेकिन वापसी के लिए कोई डेटा उपलब्ध नहीं था - तो 404 थोड़ा समझ में आता है। दुर्भाग्यवश, मुझे नहीं लगता कि एक स्पष्ट स्थिति कोड है जो यहां समझ में आता है, लेकिन मैं 204 के उत्तर की तरफ झुकना चाहता हूं (या संभावित रूप से 200 ऐसे शरीर के साथ जो "डेटा अनुपलब्ध" इंगित करता है)। – MandM

+0

204 निश्चित रूप से गलत है अगर http अनुरोध विफलता माना जाता है। – Evert

+0

'विफलता माना जाता है' पर निर्भर करता है कि यदि आप कुछ खोज रहे हैं और कोई परिणाम नहीं लौटाया गया है तो 204 स्वीकार्य हो सकता है। ओपी वास्तव में एक निश्चित उत्तर के लिए पर्याप्त विवरण प्रदान नहीं किया था। हमें बस इतना ही जाना है कि 'अनुरोध के लिए कोई डेटा उपलब्ध नहीं था' डेटा स्रोत से संपर्क करने वाली किसी समस्या के मामले को अलग से संभाला जाता है, इसलिए वास्तव में यह सब छोड़ देता है कि कोई ऐसे डेटा के लिए अनुरोध कर रहा है जो अस्तित्व में नहीं है, वास्तव में एक त्रुटि स्थिति की तरह प्रतीत नहीं होता है इसलिए 2xx रेंज उचित प्रतीत होती है। – Dan675

22

3) मैं इस

2 के लिए 503 से सहमत) सच कहूं मुझे लगता है कि एक अच्छा तर्क शीर्षक में मामला 2 में 204 का उपयोग कर आप शामिल कर सकते हैं metainfo इंगित करने के लिए विशेष रूप से क्या 'गलत हो गया था के लिए बनाया जा सकता है '। यह वास्तव में इस बात पर निर्भर करता है कि आप इस मामले को एपीआई स्तर पर 'एक त्रुटि' मानते हैं।

यदि एपीआई स्वयं इरादे के रूप में कार्य कर रहा है, और अनुरोध एक वैध एंडपॉइंट उपयोगकर्ता द्वारा वैध एंडपॉइंट के लिए था, और सर्वर को खराब होने का कारण नहीं था, तो 400 या 500 श्रृंखला त्रुटियों में से बहुत कम दिखाई देंगे लागू करने के लिए।

उदाहरण के लिए

, 404 आम तौर पर, यूआरआई आप मौजूद नहीं है कहा जाता है इसका मतलब है अगर यह मौजूद है, तो का उपयोग कर कि कोड में कम से कम IMHO

**10.2.5 204 No Content** 

सर्वर ने अनुरोध पूरा लेकिन ऐसा नहीं करता है भ्रामक है इकाई-शरीर को वापस करने की आवश्यकता है, और शायद अद्यतन मेटाफॉर्मेशन वापस करना चाह सकता है। प्रतिक्रिया मई में इकाई-शीर्षलेख के रूप में नया या अद्यतन मेटाफ़ॉर्मेशन शामिल हो सकता है, जो वर्तमान में अनुरोधित संस्करण से संबद्ध होना चाहिए।

यदि ग्राहक उपयोगकर्ता एजेंट है, तो उसे इसके दस्तावेज़ दृश्य को बदलना नहीं चाहिए जिससे अनुरोध भेजा जा सकता है। यह प्रतिक्रिया मुख्य रूप से के बिना कार्रवाई के लिए इनपुट की अनुमति देने के उद्देश्य से उपयोगकर्ता एजेंट के सक्रिय दस्तावेज़ दृश्य में परिवर्तन का कारण बनती है, हालांकि कोई भी नया या अद्यतन मेटाफ़ॉर्मेशन वर्तमान में उपयोगकर्ता एजेंट के सक्रिय दृश्य में दस्तावेज़ पर लागू होना चाहिए।

204 प्रतिक्रिया में संदेश-शरीर शामिल नहीं होना चाहिए, और इस प्रकार हेडर फ़ील्ड के बाद पहली खाली पंक्ति द्वारा समाप्त होने पर हमेशा समाप्त होता है।

+4

ऐसा लगता है कि एक और "लोकप्रिय" तरीका संभाला जा रहा है, एक त्रुटि संदेश या 200 HTTP स्टेटस कोड के साथ खाली प्रतिक्रिया लौट रहा है। इसे http://stackoverflow.com/questions/11402156/rest-status-code-204-on-paginated-result पर भी स्पर्श किया गया है – Werner