2013-02-21 122 views
5

के लिए HTTP प्रतिक्रिया मेरा RESTFUL API केवल JSON-encoded डेटा का जवाब दे सकता है (यानी मेरे सभी शीर्षलेखों के पास Content-Type: application/json है)। अगर मुझे Accept शीर्षलेख है जो JSON (उदाहरण के लिए, Accept: text/html) की अनुमति नहीं देता है, तो मुझे क्या वापस करना चाहिए? क्या मुझे शरीर में स्पष्टीकरण के साथ 400 Bad Request वापस करना चाहिए, या इस अपवाद के लिए एक और विशिष्ट स्थिति कोड है?एक अस्वीकार्य स्वीकार्य हेडर

ध्यान दें कि यह unsupported request content-types से अलग है।

उत्तर

3

परेशान मत हो।

ऐसे मामले होंगे जिनसे आपकी सेवा के उपभोक्ता इस हेडर को सेट करने के लिए परेशान नहीं होंगे, उदा। PHP में cURL या file_get_contents() का उपयोग करते समय।

यदि आपका एपीआई दस्तावेज बताता है कि आपकी सेवा केवल जेएसओएन आउटपुट का समर्थन करती है, तो यह काफी अच्छा होना चाहिए।

आप प्रारूप को लागू करने के लिए एक्सटेंशन के साथ भी काम कर सकते हैं, उदा। JSON और XML के लिए /path/to/resource.json?a=b या /path/to/resource.xml?a=b क्रमशः।

मामले कि आप एक से अधिक उत्पादन प्रारूपों का समर्थन करना चाहते हैं और Accept अनुरोध हेडर मूल्य गैर निर्णायक है, आप एक डिफ़ॉल्ट उत्पादन प्रारूप परिभाषित करना चाहिए।

+1

तो आप कहते हैं कि वैसे भी 'सामग्री-प्रकार: एप्लिकेशन/जेसन' के साथ सामान्य प्रतिक्रिया वापस करें? –

+1

@ एटिलाओ। सकारात्मक :) –

+0

ठीक है, यह काफी आसान है। दूसरी तरफ, यदि एपीआई जेएसओएन और कुछ और दोनों का समर्थन करेगा, तो बेनकोड ('एप्लिकेशन/एक्स-बेनकोड') कहें, लेकिन अनुरोध ने तीसरा निर्दिष्ट किया, कहें, 'स्वीकार करें: टेक्स्ट/एक्सएमएल'? (मुझे पता है कि यह मेरे मूल प्रश्न का हिस्सा नहीं है।) –

9

आप शब्दार्थ सही होना चाहते हैं:

अनुरोध HTTP/1.0 है:,

एक 406 स्वीकार्य नहीं लौटने के लिए सही बात है के रूप में ग्राहक एक प्रतिक्रिया को संभालने में सक्षम नहीं हो सकता है वह अनुरोध के प्रकार का नहीं है।

HTTP/1.1 में

, कि अभी भी आरएफसी से "सही" करने के लिए बात है, लेकिन वहाँ अपवाद हैं,

2616 धारा 10.4.7

Note: HTTP/1.1 servers are allowed to return responses which are 
     not acceptable according to the accept headers sent in the 
     request. In some cases, this may even be preferable to sending a 
     406 response. User agents are encouraged to inspect the headers of 
     an incoming response to determine if it is acceptable. 

सच में, यह की संभावना mattering बहुत कम है, जैसा कि @ जैक ने उल्लेख किया है। मैं केवल पूर्णता के हित में इस उत्तर को शामिल कर रहा हूं।