विकल्पों के एक सीमित सेट में जोड़ना; एपीआई ब्रेकिंग परिवर्तन?


9

एक HTTP एपीआई एंडपॉइंट लें जो निम्नलिखित प्रतिक्रिया मॉडल का विस्तार करता है:

{
    "type": "Dog",
    "name": "Jessi",
    ...
}

typeक्षेत्र में से एक होने के रूप में दस्तावेज में वर्णित किया गया है Dog, Catया Fish

क्या एक नया विकल्प जोड़ना, कहना Rat, एक ब्रेकिंग एपीआई परिवर्तन माना जाएगा?

क्या किसी एक्सटेंशन पर कोई विकल्प जोड़ा जा सकता है (जिसे कोई डेवलपर स्विच कर सकता है) किसी एक्सटेंशन या API पर संशोधन करने पर विचार करता है?

जवाबों:


10

यदि प्रलेखन ने इस क्षेत्र को डॉग, कैट, या फिश में से एक के रूप में वर्णित किया है, तो हाँ, एक अन्य प्रकार को जोड़ने से इंटरफ़ेस को पीछे-असंगत तरीके से बदल दिया जाता है। यह पूरी तरह से बोधगम्य है कि आपके एपीआई के एक उपभोक्ता ने मछलियों की तुलना में कुत्तों और बिल्लियों से निपटने के लिए विशिष्ट कोड लिखा है। एक अज्ञात प्रकार को देखते हुए, उपभोक्ता को यह नहीं पता होगा कि आपकी प्रतिक्रिया का क्या करना है। लेकिन यह इस बात पर बहुत निर्भर करता है कि ये प्लेसहोल्डर "कैट" और "फिश" आपके वास्तविक समस्या डोमेन में क्या दर्शाते हैं ...

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


शानदार जवाब - धन्यवाद। क्या होगा यदि दस्तावेज़ीकरण कुछ तालिका में विकल्पों को विस्तृत करता है जिसका शीर्षक "निम्न तालिका में वर्तमान में एपीआई द्वारा समर्थित जानवरों का वर्णन है।" क्या यह इंगित नहीं करता है कि विकल्पों का विस्तार किया जा सकता है?
डेव न्यू

1
@davenewza यह शायद एक अच्छा विचार है, लेकिन मैं अधिक स्पष्ट होगा। केवल इसका मतलब न बताएं - इसका सीधा मतलब है! मैं स्पष्ट उम्मीदों को स्थापित करने और उस समापन बिंदु के लिए डॉक्स में एक स्थिरता की गारंटी देने की कोशिश करता हूं , कुछ इस प्रकार है: "निम्न तालिका वर्तमान में समर्थित जानवरों को सूचीबद्ध करती है, हालांकि हम भविष्य में समर्थित जानवरों को जोड़ या निकाल सकते हैं। जब ऐसा होता है, हम एपीआई के मामूली संस्करण संख्या को अपडेट करेंगे। "
आमोन

निष्पादन योग्य विनिर्देश >>> प्रलेखित विनिर्देशन >>> निर्विवाद विनिर्देश।
VoiceOfUnreason

0

यह तभी टूटेगा जब "रैट" को मौजूदा ऑपरेशंस से लौटाया जा सके।

यदि मौजूदा परिचालन "चूहा" वापस नहीं कर सकते हैं तो इस नए विकल्प को जोड़ने से कोई प्रभाव नहीं पड़ेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.