का उपयोग कर REST Api कार्यान्वयन RESTFUL एपीआई एप्लिकेशन लिखने के सर्वोत्तम प्रथाओं में से एक, संस्करण जोड़ने के लिए है। उदाहरण के लिए:वसंत
http://my-server/api/v1/getData
http://my-server/api/v2/getData
हमारा आवेदन वसंत ढांचे का उपयोग करके आरईएसटी एपीआई का खुलासा करता है। हम एक वर्ग को नियंत्रक के रूप में चिह्नित करते हैं, किसी फ़ंक्शन में URL को मैप करने के लिए RequestMapping एनोटेशन का उपयोग करते हैं, और जेसन ऑब्जेक्ट्स से अनुवादित कुछ ऑब्जेक्ट्स को जोड़ते हैं।
उदाहरण के लिए:
@RequestMapping(method = RequestMethod.POST, value = "/api/v1/getData")
public @ResponseBody ResponseDataDTO getData(@RequestBody OperationsDetailsTDO details) {...}
अब, हम एपीआई के दूसरे संस्करण उपलब्ध कराना चाहते हैं। लगभग 2/3 कार्य समान रहते हैं, और 1/3 बदल रहे हैं। परिवर्तन तर्क और JSON ऑब्जेक्ट दोनों में हैं।
मुझे आश्चर्य है कि कोड को कैसे डिज़ाइन किया जाए। मुझे लगता है कि कोड के इस प्रकार का प्रबंधन करने के लिए कठिन है:
@RequestMapping(method = RequestMethod.POST, value = "/api/{version-var}/getData")
public @ResponseBody ResponseDataDTO createReleaseFromTemplate(@PathVariable("version-var") Integer version, @RequestBody OperationsDetailsTDO details) {
if (version == 1)
{
doForVersion1();
}
else if (version == 2)
{
doForVersion2();
}
}
यह, प्रबंधन, क्योंकि हर समारोह में अलग-अलग शाखाओं में हो जाएगा मुश्किल हो जाएगा। बस समस्या का प्रदर्शन करने के लिए, अगर मेरे पास एक स्वचालित उपकरण है जो दस्तावेज उत्पन्न करता है - यह समझने में सक्षम नहीं होगा कि एपीआई क्या है।
दूसरा, मुझे आश्चर्य है कि जेएसओएन ऑब्जेक्ट से जुड़ी कक्षाओं के साथ मुझे क्या करना चाहिए। क्या मुझे मामूली परिवर्तनों के लिए इन सभी वर्गों को डुप्लिकेट करने की ज़रूरत है?
Thx।
संबंधित http://stackoverflow.com/questions/389169/best-practices-for-api-versioning – andyb
यह सब के बाद एक अलग एपीआई है। आपको इसका उपयोग करने वाली कुछ भी बदलनी होगी। –