rest हेटोआस: संक्षिप्त विवरण




hateoas (4)

HATEOAS कुछ शब्दों में: आपके द्वारा आउटपुट किए गए डेटा में, यूआरआई का उपयोग करके अन्य संसाधनों का संदर्भ लें, आईडी नहीं।

सभी छोटी परिभाषाओं के रूप में, मैंने जो परिभाषा दी है वह कई स्तरों पर गलत है, लेकिन आपको यह समझना चाहिए कि हैटियोस का क्रूक्स क्या है।

अब, थोड़ा सा व्याख्या के लिए।

हैटोस सिद्धांत कहता है कि आपके आवेदन की स्थिति हाइपरटेक्स्ट लिंक के माध्यम से आगे बढ़नी चाहिए। इंटरनेट के चारों ओर ब्राउज़ करने के बारे में सोचें। सबसे पहले आपको पता बार में एक पता टाइप करना होगा। उस बिंदु से, आपकी नेविगेशन बहुत अधिक लिंक पर क्लिक के लिए बहुत ही धन्यवाद देती है: आप एक लिंक पर क्लिक करते हैं और आप दूसरे पृष्ठ पर समाप्त होते हैं। एक और क्लिक और यहां एक और पेज दिखाई देता है। ब्राउज़र आपको पहले पृष्ठ से दूसरे स्थान पर तीसरे स्थान पर ले जाने में सक्षम कैसे था? यह <a> तत्वों में एन्कोड किए गए यूआरएल का इस्तेमाल करता था।

इसी तरह यदि आपके आरईएसटी अनुप्रयोग इस परिणाम उत्पन्न करते हैं

<accomodation>
  <hotel info="http://example/hotel/0928374" price="200"/>
  <guest-house info="http://example/guest-h/7082" price="87"/>
</accomodation>

तो प्राप्तकर्ता को यह जानने के लिए ज्ञान के किसी बाहरी स्रोत तक पहुंच नहीं होगी कि पहला होटल http://example/hotel/0928374 और दूसरा http://example/guest-h/7082

दूसरी ओर, यदि आपका एप्लिकेशन आईडी के साथ प्रतिक्रिया उत्पन्न करता है

<accomodation>
  <hotel id="0928374" price="200"/>
  <guest-house id="7082" price="87"/>
</accomodation>

प्राप्तकर्ता आवेदन को पहले से ही पता होना चाहिए कि यूआरआई प्राप्त करने के लिए उपसर्गों के साथ आईडी कैसे बनाई जानी चाहिए, जिसमें प्रत्येक आवास के लिए जानकारी उपलब्ध है (उदाहरण के लिए "प्रत्येक अनुरोध के http://example/ जोड़ें, फिर hotel लिए होटल जोड़ें और guest-h घरों के लिए guest-h " )। आप देख सकते हैं कि यह तंत्र कई डीबी अनुप्रयोगों में जो होता है उसके समान होता है लेकिन ब्राउजर कैसे काम करता है उससे अलग है।

HATEOAS सिद्धांत का पालन करना महत्वपूर्ण है क्योंकि यह प्राप्त करने वाले अनुप्रयोगों में कठोर परिवर्तन किए बिना अनुप्रयोगों को बढ़ने की अनुमति देता है। मान लें कि आप अपने यूआरआई को http://example.com/hotel/0928374 से https://reviews.example.com/accommodation/0928374 बदलना चाहते हैं। यदि आप हेटोएस का पालन करते हैं तो यह एक साधारण परिवर्तन होगा: लौटाए गए मानों को संशोधित करें और यह है कि: आवेदन प्राप्त करना बिना किसी संशोधन के काम करना जारी रखेगा। यदि इसके बजाय यूआरआई बनाने के लिए आपके पास अलग-अलग दस्तावेज थे, तो आपको सभी एप्लिकेशन डेवलपर्स से संपर्क करना होगा और उन्हें यह नोटिस करना होगा कि दस्तावेज अपडेट कर दिए गए हैं और उन्हें परिवर्तनों को दर्शाने के लिए अपना कोड बदलना चाहिए।

अस्वीकरण: यह एक त्वरित उत्तर है जो समस्या की सतह को खरोंच करता है। लेकिन अगर आपको यह मिलता है तो आपको 80% हेटोएस सिद्धांत मिला है।

मैं हेटोआस की स्पष्ट और संक्षिप्त समझ प्राप्त करने की कोशिश कर रहा हूं, और मैं किसी विशेषज्ञ डब्लूआरटी रीस्ट का मतलब नहीं हूं। (मुझे लगता है कि मैं इसे प्राप्त करता हूं, धन्यवाद http://www.looah.com/source/view/2284 )।

क्या कोई भी समान रूप से enlighenting ब्लॉग / आलेख WRT HATEOAS का सुझाव दे सकता है?


हैटओएएस इंजन के साथ काम करने के अपने व्यक्तिगत अनुभव से, सबसे बड़ा अंतर डिजाइन का दर्शन है।

यदि हम एक वेब एप्लिकेशन बनाने जा रहे हैं तो इसके लिए दो दृष्टिकोण हैं। एक आरपीसी शैली है और दूसरा रीस्ट स्टाइल है।

यदि राज्य को आरपीसी शैली में परीक्षण किया जाना है तो हमें एक आरपीसी प्रक्रिया को कॉल करने की आवश्यकता है जो परिणाम देता है। इस तरह के एक डिजाइन दृष्टिकोण के साथ, पहले कॉल के बाद वापस पैरामीटर क्लाइंट पर संग्रहीत किया जाना चाहिए ताकि आगे की कॉल लौटाए गए पैरामीटर का उपयोग कर सकें। यह केवल क्लाइंट और सर्वर को मजबूती से जोड़ता है, जिससे समग्र प्रणाली राज्यपूर्ण होती है।

जबकि आरईएसटी शैली में, कोई आरपीसी नहीं है। क्लाइंट और सर्वर के बीच बातचीत क्या मायने रखती है। राज्य के किसी भी संक्रमण के लिए, ग्राहक को जानकारी प्राप्त करने के लिए सर्वर से बातचीत करना पड़ता है। तय की गई एकमात्र बातचीत घर पर बातचीत है। बाकी सभी क्लाइंट द्वारा खोजे जाते हैं क्योंकि यह विभिन्न इंटरैक्शन के माध्यम से जाता है।

एक कंप्यूटर विज्ञान परिप्रेक्ष्य से, एक प्रक्रियात्मक शैली है और यह एल्गोरिदमिक है। जहां आरईएसटी शैली एक पारस्परिक प्रतिमान है। कोई भी प्रणाली जो भाषा के रूप में पारस्परिक प्रतिमान को गोद लेती है वह एक हेटोएस प्रणाली प्रदान करेगी।


इस लेख ने मुझे इसे पूरी तरह से समझने में मदद की। http://restcookbook.com/Basics/hateoas/

यह सरल और सुरुचिपूर्ण है।

हैटओएएस हाइपरटेक्स्ट के लिए आवेदन राज्य के इंजन के रूप में खड़ा है। इसका मतलब है कि एपीआई के माध्यम से अपना रास्ता खोजने के लिए हाइपरटेक्स्ट का उपयोग किया जाना चाहिए। एक उदाहरण:

GET /account/12345 HTTP/1.1

HTTP/1.1 200 OK
<?xml version="1.0"?>
<account>
    <account_number>12345</account_number>
    <balance currency="usd">100.00</balance>
    <link rel="deposit" href="/account/12345/deposit" />
    <link rel="withdraw" href="/account/12345/withdraw" />
    <link rel="transfer" href="/account/12345/transfer" />
    <link rel="close" href="/account/12345/close" />
</account>

इस तथ्य के अलावा कि हमारे खाते में हमारे पास 100 डॉलर (यूएस) हैं, हम 4 विकल्प देख सकते हैं: अधिक पैसा जमा करें, पैसा निकालें, दूसरे खाते में धन हस्तांतरित करें, या हमारे खाते को बंद करें। "लिंक" -टैग हमें निर्दिष्ट क्रियाओं के लिए आवश्यक यूआरएल खोजने की अनुमति देता है। अब, मान लीजिए कि हमारे पास बैंक में 100 अमरीकी डालर नहीं है, लेकिन हम वास्तव में लाल रंग में हैं:

GET /account/12345 HTTP/1.1

HTTP/1.1 200 OK
<?xml version="1.0"?>
<account>
    <account_number>12345</account_number>
    <balance currency="usd">-25.00</balance>
    <link rel="deposit" href="/account/12345/deposit" />
</account>

अब हम लाल रंग में 25 डॉलर हैं। क्या आप देखते हैं कि अभी हमने अपने कई विकल्पों को खो दिया है, और केवल धन जमा करना वैध है? जब तक हम लाल रंग में हों, हम अपने खाते को बंद नहीं कर सकते, न ही खाते से किसी भी धन को स्थानांतरित या वापस ले सकते हैं। हाइपरटेक्स्ट वास्तव में हमें बता रहा है कि क्या अनुमति है और क्या नहीं: HATEOAS


आरईएसटी और हैटियोस के साथ एक मुद्दा इंटरफ़ेस परिभाषा पर दृश्यता और नियंत्रण की कठिनाई और कमी है। अधिक पारंपरिक आरपीसी शैली की बातचीत के साथ आम तौर पर एक आर्टफैक्ट होता था जैसे आईडीएल या डब्ल्यूएसडीएल जो एपीआई को परिभाषित करता था और परियोजना द्वारा नियंत्रित और प्रबंधित किया जा सकता था।

एक हेटोएस के साथ एपीआई गतिशील रूप से वांछनीय है और इसे व्यवहार (राज्य परिवर्तन) के सेट के रूप में वर्णित किया जा सकता है। कोड में व्यवहार का वर्णन किया गया है। इंटरफ़ेस विवरण से उत्पन्न कोड के बजाय कोड से एपीआई विवरण (WADL) उत्पन्न होता है।





hateoas