2014-12-20 5 views
5

असल में, मुझे लगता है कि आपके आरईएसटी एपीआई संस्करण का एक अच्छा विचार है। यह सामान्य ज्ञान है। आमतौर पर आप ऐसा करने के तरीके पर दो दृष्टिकोण को पूरा: ट्विलियो के रूप में एक आरईएसटी एपीआई संस्करण के संस्करण का लाभ क्या है?

  • ऐसे /api/v1/foo/bar रूप

    • या तो, आप अपने URL में एक संस्करण पहचानकर्ता है, या, आप इस तरह Accept: vnd.myco+v1 के रूप में एक शीर्ष लेख का उपयोग,।

    अभी तक, बहुत अच्छा है। यह almost all big companies do है। दोनों दृष्टिकोणों में उनके पेशेवर और विपक्ष हैं, और इनमें से बहुत सी चीजों पर चर्चा की गई है here

    अब मैंने टिलिलियो में एक पूरी तरह से अलग दृष्टिकोण देखा है, जैसा कि here वर्णित है। वे एक तिथि का उपयोग करते हैं:

    संकलन समय पर, डेवलपर को कोड संकलित होने पर एप्लिकेशन का टाइमस्टैम्प शामिल होता है। वह टाइमस्टैम्प सभी HTTP अनुरोधों में जाता है।

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

    यह एक बहुत ही चालाक और रोचक दृष्टिकोण है, हालांकि मुझे लगता है कि यह थोड़ा जटिल है। यह समझने में भ्रमित हो सकता है कि टाइमस्टैम्प संकलन समय या एपीआई जारी होने पर टाइमस्टैम्प है, उदाहरण के लिए।

    अब जबकि मुझे किसी भी तरह से यह चालाक लगता है, मुझे आश्चर्य है कि इस दृष्टिकोण के वास्तविक लाभ क्या हैं। बेशक, इसका मतलब है कि आपको केवल अपने एपीआई (वर्तमान एक) के एक संस्करण को दस्तावेज करना होगा, लेकिन दूसरी ओर यह और अधिक कठिन हो गया है की खोज करने योग्यता बनाता है।

    क्या किसी को पता है कि इस दृष्टिकोण के फायदे क्या हैं, तो क्यों ट्विलियो ने ऐसा करने का फैसला किया?

    कृपया ध्यान दें कि मुझे पता है कि यह प्रश्न ऐसा लगता है कि उत्तर मुख्य रूप से राय आधारित हैं, लेकिन मुझे लगता है कि ट्विलियो के पास ऐसा करने का एक अच्छा तकनीकी कारण था। तो कृपया इस प्रश्न को प्राथमिकता के आधार पर मत बंद करें, क्योंकि मुझे आशा है कि उत्तर नहीं है।

  • उत्तर

    2

    दिलचस्प सवाल, +1, लेकिन जो मैं देखता हूं उससे केवल उनके पास दो संस्करण हैं: 2008-08-01 और 2010-04-01। तो मेरे दृष्टिकोण से यह v1 और v2 वर्तनी करने का एक और तरीका है, इसलिए मुझे नहीं लगता कि तकनीकी कारण था, केवल वरीयता। https://news.ycombinator.com/item?id=2857407

    संपादित करें: सुनिश्चित करें कि आप नीचे टिप्पणी पढ़ जहां @kelnos और @andes एपीआई संस्करण के लिए इस तरह के दृष्टिकोण का उपयोग करने का एक फायदा उल्लेख कर

    यह मैं अपने निर्णय पर मिल सकता है सब है।

    +1

    हां, केवल दो संस्करण हैं, लेकिन आप वास्तव में अपनी इच्छित तारीख निर्दिष्ट कर सकते हैं। मान लें कि मैंने आज एक ऐप लिखा है, और मुझे वर्तमान संस्करण (दिनांक) संख्या याद नहीं है। तो मैं आज की तारीख का उपयोग करता हूं: 2014-12-23। एपीआई स्वचालित रूप से नवीनतम एपीआई संस्करण चुन लेगा जो कि मेरे द्वारा निर्दिष्ट दिनांक से अधिक नया नहीं है। – kelnos

    +0

    @ केलनोस: यह एक संस्करण संख्या के साथ भी काम करता है। उदाहरण के लिए, आपके पास '/ v1/api /' और '/ v2/api /' हो सकता है लेकिन आप '/ api/'का भी खुलासा करते हैं जो नवीनतम संस्करण को इंगित करता है, मूल रूप से'/v2/api/' – Bogdan

    +1

    के लिए उपनाम @Bogdan, एपीआई के डिफ़ॉल्ट/नवीनतम संस्करण को उजागर करके, जैसा कि आप '/ api /' के साथ सुझाव देते हैं, क्लाइंट को तोड़ने वाले परिवर्तनों को स्वीकार करने का जोखिम है, क्योंकि नवीनतम v2, v3, आदि हो सकता है। तिथि डेवलपर्स को आसान बनाती है आज के रूप में नवीनतम अनुरोध करने का तरीका है, और कल उन्हें पेश किए जा रहे परिवर्तनों को तोड़ने से सुरक्षित रखता है। – andes

    0

    एक और चीज मैं इस बारे में सोच सकता हूं कि यह एक दिलचस्प दृष्टिकोण है यदि आप ऐसे एपीआई के डेवलपर हैं।

    आपके पास 20 विधियां हैं, और आपको उनमें से 1 में ब्रेकिंग परिवर्तन शुरू करने की आवश्यकता है।

    सेवर का उपयोग (v1, v2, v3, आदि) आपको v2 एपीआई की आवश्यकता है। आपके सभी 20 तरीकों को अब v2 का जवाब देने की आवश्यकता है, लेकिन हकीकत में, वे विधियां बिल्कुल नहीं बदली गई हैं, नई नहीं हैं।

    तिथियों का उपयोग करके, आप अपनी अपरिवर्तित विधियों को इस तरह रख सकते हैं, और जब अनुरोध आता है, तो यह सबसे अच्छा मैच चुनें।

    मुझे नहीं पता कि यह कैसे कार्यान्वित किया गया है, उस पर कोई भी जानकारी वास्तव में स्वागत होगी।

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