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




hateoas (4)

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

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


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% हेटोएस सिद्धांत मिला है।


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

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


हाइपरमीडिया कंटेंट (जिसे पहले हेटोएस के नाम से जाना जाता है) एक बाधा है जिसका उपयोग उपयोगकर्ता-एजेंट को दिशा प्रदान करने के लिए किया जाता है।

लौटा प्रतिनिधित्व में लिंक शामिल करके, सर्वर उपयोगकर्ता-एजेंट से बोझ को हटा सकता है कि यह निर्धारित करने के लिए कि वर्तमान आवेदन स्थिति के आधार पर कौन से कदम उठाए जा सकते हैं और यह जानना कि उस लक्ष्य को प्राप्त करने के लिए किसके साथ बातचीत करना है।

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

हाइपरमीडिया बाधा के अनुरूप एक उपयोगकर्ता-एजेंट एक राज्य मशीन की तरह कार्य करता है, जहां वर्तमान संक्रमण में उपलब्ध लिंक निम्नलिखित कारणों से राज्य संक्रमण होते हैं । लौटा प्रतिनिधित्व नया राज्य बन जाता है।

इस दृष्टिकोण के लाभ बहुत हल्के उपयोगकर्ता-एजेंट हो सकते हैं । इसे राज्य का प्रबंधन करने के लिए बहुत कम कोड की आवश्यकता होती है क्योंकि इसकी कार्रवाइयों को पूरी तरह से प्राप्त प्रतिक्रिया और उस प्रतिक्रिया को प्राप्त करने वाले लिंक पर आधारित होना चाहिए। उपयोगकर्ता एजेंट कोड यह प्राप्त करने के अनिवार्य अनुक्रमों के बजाय घोषणात्मक और प्रतिक्रियाशील हो जाता है , फिर यह करें और फिर ऐसा करें, आपके पास बस निम्नलिखित लिंक के लिए यांत्रिकी है और जब आप इसे प्राप्त करते हैं तो कई उदाहरण हैं।

यह कैसे काम करता है इसके उदाहरण के लिए , आपको अपने वेब ब्राउज़र और वेब साइट से आगे की आवश्यकता नहीं है जो जावास्क्रिप्ट का उपयोग नहीं करता है। ब्राउज़र आपको HTML में लिंक के आधार पर विकल्पों के साथ प्रस्तुत करता है। जब आप उस लिंक का पालन करते हैं, तो ब्राउज़र आपके वर्तमान स्थिति को नए राज्य के साथ बदल देता है जब आप लिंक का पालन करते हैं। बैक बटन काम करता है (या कम से कम चाहिए) क्योंकि आप अपने इतिहास के लिंक से राज्य को पुनः प्राप्त कर रहे हैं। ब्राउजर को इस बात पर ध्यान नहीं देना चाहिए कि आप पेज पर कैसे पहुंचे, क्योंकि राज्य पूरी तरह से पुनर्प्राप्त प्रतिनिधित्व पर आधारित होना चाहिए।

यह "राज्य प्रबंधन" मॉडल बहुत सीमित हो सकता है , क्योंकि आपकी वर्तमान एप्लिकेशन स्थिति एक सर्वर प्रतिक्रिया पर आधारित है। हालांकि, जटिल अनुप्रयोगों को एक साथ काम कर रहे उपयोगकर्ता-एजेंटों के एक सेट का उपयोग करके बनाया जा सकता है । यह AJAX प्राप्त करने का एक हिस्सा है जिसमें यह अलग-अलग अनुरोध करने के लिए एक अलग उपयोगकर्ता-एजेंट का उपयोग करने की अनुमति देता है और इसलिए, एक और राज्य मशीन का प्रबंधन करता है। दुर्भाग्यवश, जब लोग जावास्क्रिप्ट अनुरोध करना शुरू करते हैं, तो अधिकांश लोग आरपीसी शैली का सहारा लेते हैं, जो जावास्क्रिप्ट की प्राकृतिक असीमितता पर दुर्भाग्यपूर्ण है।


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

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

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

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

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





hateoas