2012-07-04 11 views
6
के बीच भेद करने

क्या उपयुक्त प्रतिक्रिया कोड और संदेशों के लिए कर रहे हैं:HTTP प्रतिसाद कोड अनुचित मापदंडों और नाकाम रहने के मूल्यों

  1. क्षेत्रों गलत तरीके से प्रस्तुत (शरीर बनाम URL पैरामीटर) या उसमें फ़ील्ड गुम
  2. क्षेत्रों अमान्य मान रही (संख्या के बजाय स्ट्रिंग, भविष्य में टाइमस्टैम्प)
  3. कुछ अक्षर URL में ?, / तोड़ सामान की तरह
  4. वास्तविक विफलताओं पैरामीटर: अमान्य क्रेडेंशियल्स, पहले से ही किया कार्रवाई
  5. दोहरा

वर्तमान में, हम सभी के लिए 400 का उपयोग करते हैं।

उत्तर

6

मामले 1, 2 और अपने प्रश्न में 3 अनुरोध में अनिवार्य रूप से वाक्यात्मक त्रुटियाँ हैं

=>400 गलत अनुरोध

(RFC 2616 का कहना है: अनुरोध सर्वर द्वारा समझा नहीं जा सका । विकृत वाक्य-रचना के कारण)

केस के रूप में 4:

एक। अमान्य क्रेडेंशियल

=>401 अनधिकृत

ज। दोहरा पहले से ही किया कार्रवाई

=>

निषिद्ध (आरएफसी का कहना है: सर्वर ने अनुरोध समझ, लेकिन यह पूरा करने से इंकार कर रहा है प्राधिकरण में मदद नहीं करेगा और अनुरोध दोहराया नहीं जाना चाहिए।।)

लेकिन तब 409 विरोधाभास और 410 जब गलत तरीके से सामान को संशोधित करने की कोशिश कर मेकअप भावना गॉन (डाल) या क्रमशः पहले से ही हटा संसाधनों तक पहुंच सकते,।

और यहां RFC 2616 Section 10 है।

3

प्रतिक्रिया प्रतिक्रिया शरीर में वापस आने के बारे में कुछ जानकारी प्राप्त करने के लिए प्रत्येक प्रतिक्रिया कोड के लिए HTTP स्पेक पढ़ें। उदाहरण के लिए, 4xx कहता है, "एक हेड अनुरोध का जवाब देने के अलावा, सर्वर में एक त्रुटि शामिल होनी चाहिए जिसमें त्रुटि स्थिति का स्पष्टीकरण शामिल है, और क्या यह एक अस्थायी या स्थायी स्थिति है।"

ध्यान में रखना प्राथमिक बिंदु यह है कि HTTP प्रतिक्रिया कोड एक समान होने के लिए डिज़ाइन किए गए हैं, और इसलिए अलग-अलग अनुप्रयोगों की विस्तृत आवश्यकताओं को खिलाने के बजाय इंटरऑपरेबिलिटी को बढ़ावा देने के साथ बहुत कुछ करना है। उस प्रतिक्रिया में मिनट विवरण शामिल करने के लिए प्रतिक्रिया कोड का प्रयोग करें, कोड नहीं, जिसे आप अपने ग्राहकों को समझने की अपेक्षा करते हैं।

1 क्षेत्रों गलत तरीके से (शरीर बनाम URL पैरामीटर) या उसमें फ़ील्ड गुम

वापसी "404 नहीं मिला" प्रस्तुत की। क्वेरीस्ट्रिंग पैरामीटर यूआरआई का हिस्सा हैं और संसाधनों की पहचान के लिए उपयोग किए जाते हैं।/foo/bar?a=1&b=2foo/bar से भिन्न संसाधन की पहचान करता है। यदि संसाधन मौजूद नहीं है, तो 404 लौटाएं। इससे कोई फर्क नहीं पड़ता कि आपके कोड में एक ही तर्क का उपयोग उसी पथ के लिए किसी भी क्वेरीस्ट्रिंग पैरामीटर को संभालने के लिए किया जाता है: उन विवरणों को जानबूझकर वर्दी इंटरफेस के पीछे छुपाया जाता है। अधिक जानकारी के लिए the URI spec देखें।

2 फ़ील्ड अमान्य मानों (संख्या के बजाय स्ट्रिंग, भविष्य में टाइमस्टैम्प)

400 जब तक संसाधन एक राज्य में जो अनुरोध है कि उपयोगकर्ता यथोचित हो सकता है विरोध है सबसे अच्छा यहाँ, है हो रही है हल करने के लिए (और फिर अनुरोध फिर से जमा) है, जो मामले बदले में 409.

3 की तरह कुछ पात्रों?,/URL में तोड़ सामान पैरामीटर सक्षम

यदि ऐसा ब्रेकेज आपके सर्वर के कारण क्वेरीस्ट्रिंग घटक में आरक्षित अक्षरों को सही ढंग से संभाल नहीं रहा है, तो 500 लौटाएं। यदि ग्राहक ने एक विकृत अनुरोध-यूआरआई जमा किया है, तो 400 लौटाएं। यदि यूआरआई एक संसाधन की पहचान करता है जो आपका सर्वर संभाल नहीं करता है, तो वापसी 404.

4 वास्तविक विफलताओं: अमान्य क्रेडेंशियल्स, पहले से ही किया कार्रवाई दोहरा

अमान्य क्रेडेंशियल "401 अनधिकृत" में परिणाम चाहिए। अनुरोध विधि को idempotent (GET, HEAD, PUT, DELETE) होने पर एक क्रिया को दोहराएं, जिसके परिणामस्वरूप 200 ओके (या रीडायरेक्ट, इत्यादि) होनी चाहिए। पोस्ट के लिए, एक क्रिया दोहराना पूरी तरह से कार्रवाई की प्रकृति पर निर्भर करता है, और व्यावहारिक रूप से किसी भी स्थिति कोड को वापस किया जा सकता है। 400/40 9 आम है, लेकिन ऐसे कई संसाधन बस कार्रवाई को फिर से करते हैं, जो अक्सर वांछनीय होता है।

+0

+1। अजीब यूआरएल के लिए 404 सार्थक लगता है। – ArjunShankar

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