मैं संसाधन को क्लोन करने के लिए एक विश्वसनीय API विधि को डिज़ाइन करने के लिए swagger का उपयोग करके एक YAML दस्तावेज़ लिख रहा हूं। मेरे पास कुछ विकल्प हैं और यह नहीं पता कि कौन सा सबसे अच्छा होगा। कृपया कोई सलाह दे सकता है?संसाधन को क्लोन करने के लिए REST API डिज़ाइन
विकल्प:
- उपभोक्ता लिए संसाधन वस्तु क्लोनिंग की जिम्मेदारी को त्यागने (जहां उपभोक्ता एक नई वस्तु पर गुण के लिए मान प्रदान करती है और फिर एक नई वस्तु बनाता है), इस प्रक्रिया को करने की आवश्यकता होगी एपीआई को दो अनुरोध शामिल हैं: स्रोत ऑब्जेक्ट के लिए संसाधन के विरुद्ध प्राप्त करें और फिर नया संसाधन बनाने के लिए उस संसाधन पर एक पोस्ट करें। ऐसा लगता है कि उपभोक्ता की ज़िम्मेदारी बहुत अधिक है।
- वेबएडीवी HTTP एक्सटेंशन का उपयोग करना जो एक COPY विधि (see here) प्रदान करता है। ऐसा लगता है कि यह वही है जो मैं क्लोनिंग के लिए करना चाहता हूं। हालांकि, मैं/{संसाधन} के लिए संभव
- पोस्टिंग जितना मानक तरीकों से चिपके चाहते हैं? ResourceIdToClone = {id} जहां resourceIdToClone एक वैकल्पिक पैरामीटर है। यह एक एपीआई पथ के साथ संघर्ष करेगा जो मेरे पास संसाधन बनाने के लिए पहले से है, जहां मैं पोस्ट बॉडी में एक स्कीमा जोड़ता हूं। इसका मतलब बनाने और क्लोनिंग के लिए/{resource}/POST का उपयोग करना होगा, और यह एसआरपी का उल्लंघन करेगा।
- 'क्लोनेबल रिसोर्स' नामक एक नया संसाधन जोड़ना और/क्लोनेबल रिसोर्स/{resource_type}/{resource_source_id} पर एक पोस्ट करना। एक भेड़ को क्लोन करने के उदाहरण के लिए, आप एक पोस्ट/क्लोनेबल रिसोर्स/भेड़/10 पर पोस्ट करेंगे। इस तरह, मानक HTTP विधियों का उपयोग करना संभव होगा, किसी भी अन्य संसाधन पथ (या एसआरपी उल्लंघन) के साथ कोई संघर्ष नहीं होगा। हालांकि, मैं डोमेन में एक नया और संभावित रूप से अनावश्यक प्रकार जोड़ रहा हूं। मैं एक परिदृश्य के बारे में भी नहीं सोच सकता जब कोई उपभोक्ता इस संसाधन के लिए पोस्ट के अलावा कुछ भी करना चाहेगा, इसलिए मुझे कोड कोड की तरह लगता है।
- /संसाधन/{आईडी} के खिलाफ एक प्राप्त करें = विधि = क्लोन। यहां लाभों में से एक यह है कि कोई अतिरिक्त संसाधन आवश्यक नहीं है और इसे एक साधारण वैकल्पिक क्वेरीस्ट्रिंग पैरामीटर द्वारा निर्धारित किया जा सकता है। मुझे पता है कि यहां जोखिमों में से एक यह है कि अगर कोई वेब पेज में यूआरएल है तो इसे एक जीईटी विधि का उपयोग करके पदों को हटाने या हटाने की खतरनाक हो सकती है क्योंकि इसे एक खोज इंजन द्वारा क्रॉल किया जा सकता है।
किसी भी मदद के लिए धन्यवाद!
आपकी प्रतिक्रिया जूलियन के लिए धन्यवाद। यह एक सुविधाजनक विकल्प है और इसमें कोई संदेह नहीं है कि विधि उपभोक्ता को क्या करने की अनुमति देती है। हालांकि, मुझे विश्वास है कि मानक HTTP विधियों के लिए चिपकना अब के लिए सबसे अच्छा तरीका है क्योंकि यह मेरे एपीआई को सरल बना देगा और एक परिदृश्य से बच जाएगा जहां दो अलग-अलग तरीकों से एक ही परिणाम प्राप्त करना संभव है (या तो सीओपीवाई का उपयोग करके संसाधन को क्लोन करना, या द्वारा एक संसाधन के खिलाफ एक जीओटी कर एक पोस्ट तो)। मैं उपभोक्ता को अपने एपीआई –