हाइपरमीडिया (HATEOAS) का क्या लाभ है?


18

मैं कार्यक्रमों द्वारा उपयोग के लिए एपीआई के लिए HATEOAS के लिए लाभ को समझ में नहीं आता है (जैसा कि सीधे अपने एपीआई ब्राउज़ करने वाले मनुष्यों के विपरीत)। निश्चित रूप से, ग्राहक एक URL स्कीमा के लिए बाध्य नहीं है, लेकिन वे एक डेटा स्कीमा के लिए बाध्य हैं जो मेरे दिमाग में एक ही बात है।

उदाहरण के लिए, मान लें कि मैं किसी ऑर्डर पर कोई आइटम देखना चाहता हूं, तो मान लें कि मैंने ऑर्डर URL को पहले ही खोज लिया है या उसे पता है।

HATEOAS:

order = get(orderURL);
item = get(order.itemURL[5]);

गैर HATEOAS:

order = get(orderURL);
item = get(getItemURL(order,5));

पहले मॉडल में मुझे इस तथ्य को जानना होगा कि ऑर्डर ऑब्जेक्ट में एक आइटम क्षेत्र है। दूसरे मॉडल में मुझे यह जानना होगा कि आइटम URL का निर्माण कैसे करें। दोनों ही मामलों में मुझे समय से पहले कुछ "जानना" पड़ता है ताकि वास्तव में हेटोस मेरे लिए क्या कर रहा है?


1
get(orderURL);आपको बता रहा होना चाहिए the fact that the order object has an itemURL field
यानिस

जब आप क्लाइंट एप्लिकेशन लिखते हैं, तो आपको समय से पहले जानना होगा कि फ़ील्ड क्या है।
पेस


8
किसी एप्लिकेशन को ऑर्डर से आइटम प्राप्त करने के लिए कैसे माना जाता है यदि एप्लिकेशन को यह भी पता नहीं है कि ऑर्डर में आइटम है? डिस्कवरी मैन्युअल ब्राउज़िंग के लिए काम करती है लेकिन स्वचालित अनुप्रयोगों के लिए नहीं।
पेस

आदमी खुद इसके बारे में यहाँ बात कर रहा है: roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
Thiago Silva

जवाबों:


7

एक अंतर यह है कि स्कीमा उम्मीद है कि एक मानक है, या कम से कम दूसरों द्वारा पुन: उपयोग किया जा सकता है।

उदाहरण के लिए, मान लें कि आप Twitter API का उपयोग कर रहे हैं और आप StatusNet (या इसके बजाय) का समर्थन करना चाहते हैं। चूँकि वे Twitter के समान डेटा मॉडल का उपयोग करते हैं, यदि API HATEOAS का अनुसरण करता है तो आपको अभी मुख्य URL बदलना होगा। यदि ऐसा नहीं होता है, तो आपको अब कोड से प्रत्येक एकल URL को बदलना होगा ।

बेशक, अगर आपको सेवा के प्रवेश बिंदु URL को वैसे भी डालने के लिए कोड को बदलने की आवश्यकता है, तो यह इतना उपयोगी नहीं लग सकता है। यह वास्तव में चमकता है यदि वह URL गतिशील रूप से डाला गया हो; उदाहरण के लिए, यदि आप ट्विलियो जैसी सेवा का निर्माण कर रहे हैं, जो उपयोगकर्ता के स्वयं के एपीआई के साथ बातचीत करेगी।


यह एक दिलचस्प बिंदु है जिसे मैंने नहीं माना था।
पेस

@YannisRizos: हम्म, मैंने यह नहीं देखा कि मैंने कहाँ कहा कि HATEOAS एक मानक है। मैंने कहा "(डेटा) स्कीमा उम्मीद है कि एक मानक है"। REST शब्दावली में, यह मीडिया प्रकार होगा।
आंद्रे परमेस

दूसरे पढ़ने पर, आप बिल्कुल सही कह रहे हैं।
यानि

2
हां, यदि आप मानते हैं कि लिंक के लिए rel नाम समान हैं। लेकिन सामान्य रूप से बात करना, और न केवल आपके द्वारा उल्लिखित विशिष्ट उदाहरण पर, दुनिया में हर प्रोग्रामर जरूरी नहीं कि समान या समकक्ष कार्यों के लिए समान नामों का चयन करेगा। यह लाभ प्रोग्रामर को एक सामान्य इंटरफ़ेस नामकरण और मापदंडों से सहमत होने से आता है।
derloopkat

9
  1. व्याख्यात्मक एपीआई: यह तुच्छ लग सकता है लेकिन एक खोज योग्य एपीआई की शक्ति को कम मत समझो। डेटा के आसपास ब्राउज़ करने की क्षमता क्लाइंट डेवलपर्स के लिए एपीआई और उसके डेटा संरचनाओं के मानसिक मॉडल का निर्माण करना बहुत आसान बनाती है।

  2. इनलाइन प्रलेखन: लिंक संबंधों के रूप में यूआरएल का उपयोग ग्राहक डेवलपर्स को प्रलेखन के लिए इंगित कर सकता है।

  3. सरल ग्राहक तर्क: एक ग्राहक जो केवल खुद के निर्माण के बजाय URL का अनुसरण करता है, उसे लागू करने और बनाए रखने में आसान होना चाहिए।

  4. सर्वर URL संरचनाओं का स्वामित्व लेता है: हाइपरमीडिया का उपयोग सर्वर द्वारा उपयोग किए गए URL संरचनाओं के क्लाइंट के कठिन कोडित ज्ञान को हटा देता है।

  5. अन्य सेवाओं के लिए लोडिंग सामग्री: हाइपरमीडिया आवश्यक है जब अन्य सर्वर (उदाहरण के लिए एक सीडीएन) के लिए सामग्री लोड हो रही है।

  6. लिंक के साथ संस्करण: हाइपरमीडिया एपीआई के संस्करण में मदद करता है।

  7. एक ही सेवा के कई कार्यान्वयन: हाइपरमीडिया एक आवश्यकता है जब एक ही सेवा के कई कार्यान्वयन मौजूद हैं (और एक ग्राहक को उनमें से एक से अधिक का उपयोग करने की आवश्यकता है)।

आप इन बुलेट पॉइंट्स की गहन व्याख्या यहाँ पा सकते हैं: http://soabits.blogspot.no/2013/12/selling-benefits-of-hypermedia.html


> अन्य सेवाओं के लिए सामग्री लोड करना बंद: जब अन्य सर्वर (उदाहरण के लिए एक सीडीएन) के लिए सामग्री लोड हो रही हो तो हाइपरमीडिया आवश्यक है। नहीं यह नहीं। आप बस उसी लिंक को रख सकते हैं और सीडीएन का उपयोग कर सकते हैं।
ब्रूनो कोस्टा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.