मैं संभावित लाभों के बारे में बहुत कुछ पढ़ रहा हूं यदि मैं अपनी मौजूदा शेष वेब सेवाओं को यथासंभव हेटोस के रूप में परिवर्तित करना चाहता हूं। मैं अगले वैध उपलब्ध कार्यों को याद रखने में उपभोक्ता के बोझ को कम करने के लिए पेलोड में लिंक प्रदान करने में महत्व को समझता हूं। हालांकि, मैं अपने सिर को लपेटने के लिए प्रतीत नहीं कर सकता कि यह वास्तविकता में मेरी शेष वेब सेवाओं के उपभोक्ता की मदद कैसे करेगा।क्या असली दुनिया उपयोग में आराम से वेब सेवाओं के लिए हैटओस प्राप्त करना उचित है?
समझाने के लिए, मैं Rest In Practice किताब से उदाहरण लेते एक कॉफी आदेश बनाने के बारे में: -
<order xmlns="http://schemas.restbucks.com">
<location>takeAway</location>
<item>
<name>latte</name>
<quantity>1</quantity>
<milk>whole</milk>
<size>small</size>
</item>
<cost>2.0</cost>
<status>payment-expected</status>
<link rel="payment" href="https://restbucks.com/payment/1234" />
</order>
मूलतः, यह उपभोक्ता भुगतान <link>
टैग द्वारा परिभाषित करने के लिए अनुमति देता है। हालांकि, हकीकत में, उपभोक्ता को अभी भी उस वेब सेवा कॉल के सभी अर्थशास्त्रों को जानने की जरूरत है, उदाहरण के लिए, भुगतान करने के लिए पेलोड में कौन से अनुरोध पैरामीटर का उपयोग करना है, उदाहरण के लिए, किस विधि (POST या PUT) का उपयोग करना है। .. एक और शब्द में, उपभोक्ता को अभी भी WADL दस्तावेज़ों पर भरोसा करने की आवश्यकता है ताकि यह पता चल सके कि इस वेब सेवा को सफलतापूर्वक कैसे पहुंचाया जाए। ये टैग शायद अधिक समझ में आते हैं यदि वे सभी एक विशिष्ट आइटम पर जीईटी का उपयोग कर रहे हैं। अन्यथा, मुझे वास्तव में यहां लिंक को परिभाषित करने में बहुत अधिक लाभ नहीं दिख रहे हैं ... तथ्य यह है कि उपभोक्ता जानता है कि वे कौन से कदम अगली बार बुला सकते हैं, और उसके बाद WADL को यह निर्धारित करने के लिए देखें कि इसे सही तरीके से कैसे बुलाया जाए।
मेरी अगली चिंता सभी <link>
टैग के साथ बहुत भारी पेलोड के साथ समाप्त होने की संभावना है। उदाहरण के लिए,/परियोजनाओं/1/उन पर किसी GET लौटाता है यदि सभी उपयोगकर्ता जानकारी है कि परियोजना 1 हैं, मुझे लगता है मैं निम्नलिखित टैग के साथ खत्म हो जाएगा: -
<project>
<users>
<user id="12" name="mike" ... />
<user id="23" name="kurt" ... />
<user id="65" name="corey" ... />
</user>
<links>
<link rel="self" href="http://server/projects/1/users"/>
<link rel="create_user" href="http://server/projects/1/users"/>
<link rel="get_user_mike" href="http://server/projects/1/users/12"/>
<link rel="get_user_kurt" href="http://server/projects/1/users/23"/>
<link rel="get_user_corey" href="http://server/projects/1/users/65"/>
...
</links>
</project>
एक परियोजना का कहना हैं, तो 500 उपयोगकर्ता ... क्या मेरे पास पेलोड में 500 उपयोगकर्ता लिंक नहीं होंगे? अन्यथा, इस स्थिति को संभालने के लिए मेरी वेब सेवाओं को फिर से डिजाइन करने में सबसे अच्छा तरीका क्या है? या यह असली दुनिया में स्वीकार्य है?
किसी भी विचार या सुझाव की सराहना की जाती है। धन्यवाद।
+1 को देखना चाहेंगे ... आपकी प्रतिक्रिया के लिए धन्यवाद। मेरी राय में, वास्तव में WADL से कोई बच नहीं है कि क्या मैं हैटोज़ दृष्टिकोण को अपनाता हूं या नहीं, क्योंकि अंत में, मुझे अभी भी विधि उपयोग और सभी आवश्यक पैरामीटर (अनुरोध, शीर्षलेख इत्यादि) को दस्तावेज करने की आवश्यकता होगी, जिनकी मेरी आवश्यकता हो सकती है । जब आप एक दिन यूआरआई पैटर्न बदलते हैं तो क्लाइंट कोड तोड़ने के बारे में आपने एक अच्छा मुद्दा नहीं बनाया है, लेकिन अगर यह इस तथ्य को हल नहीं करता है कि क्लाइंट कोड अभी भी मेरे एपीआई के साथ सख्ती से जोड़ रहा है ... (जारी रखें) – limc
कल्पना करें , अगर मेरे पास एक पोस्ट/लॉगिन है जो 2 अनुरोध पैरामीटर ("उपयोगकर्ता" और "पासवर्ड") स्वीकार करता है और एक दिन मैंने पैरामीटर को बदलने का फैसला किया (कहें, नए नाम बदलकर या जोड़कर), यह अभी भी क्लाइंट कोड तोड़ देगा भले ही यूआरआई स्थिर है। जिस तरह से मैं इसे देखता हूं वह हैटओएएस निश्चित रूप से कुछ परिस्थितियों में मदद करता है, लेकिन यह अन्य स्थितियों में पूरी तरह से बेकार है, जो मुझे आश्चर्यचकित करता है कि यह हैटियोस को अपनाने के लायक है या नहीं। – limc
पोस्ट पैरामीटर परिवर्तनों के आपके उदाहरण में हैटॉस के साथ कुछ लेना देना नहीं है, हालांकि। हैटओएएस सर्वर से लौटाई गई पेलोड सामग्री के भीतर हाइपरलिंक्स के सही उपयोग को संदर्भित करता है, न कि आपके यूआरआई पैरामीटर के प्रारूप के लिए (जो स्पष्ट रूप से कहीं भी दस्तावेज किया जाना चाहिए और संगतता कारणों के लिए बनाए रखा जाना चाहिए)। –