2010-07-20 32 views
50

मैं एक वेब सेवा लिख ​​रहा हूं जो केवल जेसन स्वीकार करता है, और केवल जेसन आउटपुट करता है।HTTP 406 और 415 त्रुटि कोड

इसलिए यदि किसी अन्य प्रारूप का अनुरोध किया गया है तो मुझे उचित स्थिति कोड वापस करने की आवश्यकता है।

ऐसा प्रतीत होता है कि मैं दो विकल्प होते हैं:

  1. 406 - स्वीकार्य नहीं
  2. 415 - असमर्थित मीडिया प्रकार

यह बहुत अच्छा है, तो किसी ने मुझे के शब्दों के रूप में प्रबुद्ध सकता है किया जाएगा दो कोड

उत्तर

99

406 सर्वर द्वारा वापस लौटाया जाता है जब यह अनुरोध शीर्षलेख स्वीकार करने के आधार पर प्रतिक्रिया नहीं दे सकता है (यानी उनके पास एक स्वीकार्य हेडर है जो बताता है कि वे केवल एक्सएमएल चाहते हैं)।

415 सर्वर द्वारा वापस लौटाया जाता है जब अनुरोध में भेजा गया इकाई (POST या PUT में सामग्री) में असमर्थित mediatype है (यानी वे XML भेजते हैं)।

तो .. 406 जब आप जो भी चाहते हैं उसे भेज नहीं सकते हैं, 415 जब वे भेजते हैं जो आप नहीं चाहते हैं।

आशा है कि मदद करता है!

3

406 का उपयोग तब किया जाता है जब ग्राहक स्वीकृत शीर्षलेख का उपयोग कर असमर्थित सामग्री प्रकार (आपके मामले में, JSON के अलावा कुछ भी) में प्रतिक्रिया का अनुरोध करता है। दूसरी ओर 415 का उपयोग तब किया जाता है जब ग्राहक किसी असमर्थित सामग्री प्रकार में डेटा पोस्ट करता है या PUTs डेटा करता है।

संक्षेप में: 406 का उपयोग करें यदि अपेक्षित प्रारूप में आउटपुट नहीं हो सकता है और यदि आप इनपुट प्रारूप का समर्थन नहीं करते हैं तो 415 का उपयोग करें।

देखें RFC 2616 उनकी परिभाषा के लिए: 406 और 415

5

RFC2616 के शब्दों में:

406 स्वीकार्य नहीं

संसाधन अनुरोध से पहचान प्रतिक्रिया पैदा करने संस्थाओं की ही सक्षम है जिसमें सामग्री विशेषताएं स्वीकार्य नहीं हैं स्वीकृति शीर्षलेख सेन के अनुसार अनुरोध में टी ।

जब कोई ग्राहक आपकी सेवा से पूछताछ करता है, तो जांचें कि Accept* हेडर भेजे गए हैं; यदि यह application/json (या वाइल्डकार्ड, उदाहरण के लिए */*) से मेल नहीं खाता है, तो इसे वापस करें। प्रतिक्रिया इंगित करनी चाहिए "हम केवल जेएसओएन की सेवा करते हैं"।

415 असमर्थित मीडिया प्रकार

सर्वर अनुरोध की सेवा से क्योंकि अनुरोध की इकाई अनुरोध किया विधि के लिए अनुरोध किया गया संसाधन द्वारा समर्थित नहीं एक प्रारूप में है अस्वीकार कर रहा है।

बस 415 Unsupported Media Type लौटने के लिए "ग्राहक कुछ है कि JSON नहीं है, उस के साथ काम नहीं कर सकता भेजा है" न्यूनतम प्रतिक्रिया होना चाहिए; यह सुनिश्चित नहीं है कि "आपको JSON भेजने की आवश्यकता है"

-2

RFC2616 आपकी सहायता करता है!

http://www.rfc2616.com/#10.4.7

http://www.rfc2616.com/#10.4.16

मैं 415 चुनते थे, यह काफी अच्छी तरह से अपने विवरण सूट।

संपादित करें: ओह। I C। "अनुरोध की इकाई एक प्रारूप में है जो अनुरोधित संसाधन द्वारा समर्थित नहीं है"। इसलिए यदि आपके पास सामग्री के साथ अनुरोध है और उस सामग्री में गलत प्रकार है, तो आपको 415 -response फेंकना चाहिए।

+0

उन्हें दोनों, 2 अलग-अलग परिदृश्यों की आवश्यकता है – nathan

+0

मुझे ऐसे प्रश्नों से नफरत है जो आप सीधे spec से जवाब दे सकते हैं। वे स्कोरिंग में बहुत अच्छे हैं लेकिन तेज और सही प्रतिक्रिया की आवश्यकता है। : / – Cheery

31
  • 406 यदि Accept हेडर भेजा गया था तो आप पूर्ण भर नहीं सकते।
  • 415 यदि Content-Type भेजा गया है तो आप इसका उपयोग नहीं कर सकते हैं।
संबंधित मुद्दे