मैं एक रेस्ट एपीआई लिख रहा हूं और सोच रहा हूं कि विभिन्न संस्करणों का समर्थन करने के लिए सबसे अच्छा कैसे हो। इसका मतलब यह नहीं है कि URI को V2 या V3 के रूप में कैसे परिभाषित किया जाए, बल्कि इसे दिए गए कोड को कैसे संरचित किया जाए:
- एक ही समय में कई संस्करणों का समर्थन करें, जैसे। V1 और V2 और V3 URI को एक ही समय में रहना चाहिए। जब वी 4 आता है तो मैं किसी भी एक समय में सहायता राशि को बाधित करने के लिए वी 1 को रिटायर करूंगा।
- जितना संभव हो उतना कोड दोहराव से बचें
- एक संस्करण में गैर-ब्रेकिंग परिवर्तन जोड़ना आसान है, बिना अन्य संस्करणों पर प्रभाव डाले
ऐसा लगता है कि कुछ दृष्टिकोण हैं जिन्हें लिया जा सकता है:
विभिन्न संस्करणों के लिए एक शाखा के साथ (और पुराने संस्करणों को अनिवार्य रूप से उस पर कोई नया विकास कार्य नहीं करने के लिए), संस्करणों को नियंत्रित करने के लिए Git का उपयोग करें। इसका मतलब कोई कोड दोहराव नहीं होगा क्योंकि केवल नवीनतम संस्करण कोड में है, लेकिन पिछले संस्करणों को DB के नए संस्करण के साथ काम करना होगा जब तक कि वे सेवानिवृत्त नहीं हो जाते।
डुप्लिकेट कोड ताकि प्रत्येक संस्करण को एक ही एप्लिकेशन में संभाला जाए और एक पूरी तरह से अलग कोड पाथ हो, लेकिन इसका अर्थ बहुत अधिक दोहराव होगा
संस्करणों में बहुत सारे कोड का पुन: उपयोग करें, लेकिन इससे एक संस्करण को बनाए रखना कठिन हो जाएगा क्योंकि पिछले संस्करण को प्रभावित करने की अधिक संभावना है
क्या इस समस्या से निपटने के लिए कोई सर्वोत्तम अभ्यास है क्योंकि सभी विकल्पों में अपनी समस्याएं हैं?