2011-02-22 9 views
18

उस साधारण मामले पर विचार करें जहां उपयोगकर्ता कोई पोस्ट हटा रहा है। यह एक अनिवार्य फ़ील्ड, post_id के साथ सरल HTTP डिलीट/POST अनुरोध है।अनिवार्य फ़ील्ड के बिना अनुरोध के लिए उचित HTTP प्रतिक्रिया कोड क्या है

पोस्ट_आईडी प्रदान नहीं होने पर सर्वर को क्या करना चाहिए?

जाहिर है, उपयोगकर्ता को कभी भी इस व्यवहार का सामना नहीं करना चाहिए, तो चलिए शुद्ध हो जाएं।

मेरी पहली ले 400 गलत अनुरोध होगा, लेकिन कल्पना का कहना है

The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications. 

और मैं कहना चाहता हूँ लापता क्षेत्र वाक्य रचना/http पीओवी से ठीक है, यह आवेदन डोमेन-विशिष्ट अर्थ आवश्यकता नहीं है।

200 स्पष्टीकरण के साथ ठीक है, 500 अजीब लगता है क्योंकि यह अनुरोध समस्या है।

हालांकि?

+1

संभावित डुप्लिकेट [यदि अनुरोध आवश्यक पैरामीटर गुम हो रहा है तो क्या HTTP स्थिति प्रतिक्रिया कोड का उपयोग करना चाहिए?] (http://stackoverflow.com/questions/3050518/what-http-status-response-code-should-i-use-if-the-request-is-missing-a-required) – Lucero

उत्तर

29

400 सही प्रतिक्रिया है।

400 HTTP बिंदु दृश्य से विकृत वाक्यविन्यास तक सीमित नहीं है। एक अनिवार्य तर्क वाक्य रचना पहले यह अजीब लगता है कि इस बात के लिए अलग से कोई वापसी कोड है कि कम से आवेदन और इस तरह एक "ग़लत अनुरोध"

संपादित

द्वारा परिभाषित करने में कोई त्रुटि है, लेकिन वापसी याद आ रही है कोड को क्लाइंट को लेने वाले कार्यों में अंतर करने के लिए डिज़ाइन किया गया है। एक 400 त्रुटि कोड का अर्थ है कि क्लाइंट को POST डेटा या क्वेरी स्ट्रिंग को एप्लिकेशन द्वारा परिभाषित प्रारूप में बदलना चाहिए। इसलिए यह इस मामले के लिए उपयुक्त है।

+0

यहां एक सूची है REST के लिए सर्वोत्तम प्रथाओं पर विश्वसनीय प्रतिक्रिया कोड के साथ-साथ कुछ अन्य जानकारी: http://goo.gl/Nf9gt –

1

एक आरईएसटी परिदृश्य में, हटाए जाने वाले संसाधन को यूआरएल द्वारा पहचाना जाना चाहिए, इसलिए संसाधन की आईडी उचित रूप से पहचानने के लिए उस यूआरएल का हिस्सा होना चाहिए। एक बार यह धारणा सही हो जाने के बाद, यूआरएल या तो एक अलग संसाधन fr हटाने की पहचान कर रहा है, या यह नहीं है (जो 404 देगा)

अनुपलब्ध पैरामीटर के सामान्य मामले में, हालांकि, मैं अक्सर 403 का उपयोग करता हूं निषिद्ध त्रुटि। तर्क यह है कि अनुरोध समझा गया था, लेकिन मैं पूछने के लिए नहीं जा रहा हूं (क्योंकि चीजें गलत हैं)। प्रतिक्रिया इकाई बताती है कि क्या गलत है, इसलिए यदि प्रतिक्रिया एक HTML पृष्ठ है, तो त्रुटि संदेश पृष्ठ में हैं। यदि यह एक JSON या XML प्रतिक्रिया है, तो त्रुटि जानकारी वहां है।

rfc2616 से:

10.4.4 403 निषिद्ध

सर्वर ने अनुरोध समझ, लेकिन यह पूरा करने से इंकार कर रहा है।
प्राधिकरण सहायता नहीं करेगा और अनुरोध दोहराया नहीं जाना चाहिए।
यदि अनुरोध विधि HEAD नहीं थी और सर्वर
सार्वजनिक करना चाहता है कि क्यों अनुरोध पूरा नहीं हुआ है, तो उसे इकाई में इनकार करने के कारण का वर्णन करना चाहिए। यदि सर्वर नहीं चाहता है तो यह जानकारी क्लाइंट को उपलब्ध कराएं, स्थिति कोड 404
(नहीं मिला) इसके बजाय उपयोग किया जा सकता है।

संबंधित मुद्दे

 संबंधित मुद्दे