2013-09-23 7 views
24

मैंने रीस्टफुल सेवाओं के संस्करण पर कई स्टैक ओवरफ़्लो (और अन्य) पोस्ट पढ़ी हैं। ईमानदार होने के लिए यह थोड़ा जबरदस्त है।विक्रेता एमआईएम प्रकार (एपीआई संस्करण के लिए)

मैंने एक स्वीकार्य उपयोग करने का निर्णय लिया है: हमारे (मामूली-) रीस्टफुल सेवा के लिए हेडर ताकि ग्राहक संसाधन के विशिष्ट संस्करणों का अनुरोध कर सकें। मैं स्पष्ट नहीं हूं कि स्वीकृति हेडर में क्या निर्दिष्ट करना है।

Accept: application/vnd.mycompany.myapp.customer-v2+json 

मेरे सवाल कर रहे हैं:

  1. मैं सही हूँ कि सभी VND प्रकार पंजीकृत होना जरूरी है

    उदाहरण मैं अक्सर देखा है है? (http://www.iana.org/cgi-bin/mediatypes.pl)

  2. क्या संस्करण और प्रकार (i.e. -v2 + json) प्रकार का हिस्सा है और इसलिए प्रत्येक संस्करण और प्रकार को पंजीकृत करने की आवश्यकता होगी?

  3. क्या "x-" उपप्रकार के बजाय vnd का उपयोग करने का कोई कारण है जिसे पंजीकृत होने की आवश्यकता नहीं है? उदाहरण के लिए:

    Accept: application/x-mycompany.myapp-v2+json 
    

    मौजूदा API केवल आंतरिक है, लेकिन भविष्य में यह ग्राहकों के सामने आ जाएगा।

  4. सुनिश्चित नहीं है कि यह समझ में आता है, लेकिन क्या मौजूदा प्रकार का उपयोग करना संभव है लेकिन एक संस्करण जोड़ें? (वर्तमान एपीआई रिटर्न "application/json")

    Accept: application/json-v2 
    
  5. क्या एक संस्करण और प्रकार जोड़कर के लिए स्वीकार्य प्रारूप (उदा -v2 + json) कर रहे हैं।

  6. क्या होगा यदि कोई ग्राहक गैर-समर्थित संस्करण मांगता है? क्या सही प्रतिक्रिया 406 है? क्या क्लाइंट किसी भी संस्करण का अनुरोध कर सकता है? या अधिक आम तौर पर, क्या होगा यदि ग्राहक कोई स्वीकार्य हेडर प्रदान नहीं करता है या स्वीकार करता है: */*?

कोई अतिरिक्त सुझाव स्वागत है। लक्ष्य, निश्चित रूप से, किसी दिए गए संसाधन के लिए सेवा लौटने के लिए परिवर्तनों की अनुमति देना है, लेकिन मौजूदा ग्राहकों को तोड़ना नहीं है।

+1

एक्स-उपसर्ग को बहिष्कृत कर दिया गया है। यदि यह अभी भी उपयोग में था, तो आपको वास्तव में दोनों की आवश्यकता होगी। "Vnd।" विक्रेता उपसर्ग है। यह अभी भी मान्य है, और हमेशा विक्रेता-विशिष्ट माइम-प्रकार का उपयोग करते समय इसका उपयोग किया जाना चाहिए। – yam655

उत्तर

3

मैं jsonapi.org मानक का पालन करने का फैसला किया है के रूप में, मैं सिर्फ क्या आपके उदाहरण से पता चलता करने के लिए फैसला किया।

आपके प्रश्नों के बारे में:

  1. आपका MIME प्रकार पंजीकृत किया जाना चाहिए
  2. मुझे विश्वास है कि प्रत्येक संस्करण और प्रकार पंजीकृत किया जाना चाहिए, के रूप में वे अद्वितीय प्रकार के रूप में में नोट
  3. x- उपसर्ग पदावनत किया गया है कर रहे हैं एक टिप्पणी
  4. application/json-v2 मान्य नहीं होगा
  5. आप 415 Unsupported Media Type या बस 400 Bad Request लौट सकते हैं
+1

क्या आपने 'application/vnd.mycompany.myapp.customer + json जैसे कुछ पर विचार किया था; संस्करण = 2.0' –

+2

[415] (https://tools.ietf.org/html/rfc7231#section-6.5.13) का अर्थ है कि ** अनुरोध पेलोड ** एक प्रारूप में है जो सर्वर द्वारा समर्थित नहीं है । [406] (https://tools.ietf.org/html/rfc7231#section-6.5.6) ओपी की आवश्यकता के बेहतर सूट। – sp00m

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