जैसा कि मैं वर्तमान में समझता हूं कि HATEOAS मूल रूप से प्रत्येक प्रतिक्रिया लिंक के साथ एक साथ भेजने के बारे में जानकारी है कि आगे क्या करना है। एक सरल उदाहरण इंटरनेट पर आसानी से मिल जाता है: एक बैंकिंग प्रणाली जिसमें एक खाता संसाधन होता है। खाता संसाधन के लिए GET अनुरोध के बाद उदाहरण इस प्रतिक्रिया को दिखाता है
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>
डेटा के साथ मिलकर लिंक बता रहे हैं कि आगे क्या किया जा सकता है। अगर संतुलन नकारात्मक है तो हमारे पास है
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>
ताकि हम केवल जमा कर सकें। यह सब ठीक है, अगर हम फिडलर का उपयोग कर रहे हैं या ब्राउज़र के साथ अनुरोध कर रहे हैं तो हम आसानी से देख सकते हैं कि क्या किया जा सकता है। इस तरह की जानकारी उपयोगी है तो हमारे लिए एपीआई की क्षमताओं की खोज करने के लिए और क्लाइंट से सर्वर को डिकॉय किया गया है।
हालाँकि, मुद्दा यह है कि जब हम एक क्लाइंट बनाते हैं, जैसे कि जावास्क्रिप्ट के साथ एक एसपीए, या एक एंड्रॉइड ऐप या कई अन्य चीजें, मैं यह नहीं देख सकता कि हेटोस प्रासंगिक कैसे बना रहा है। मेरा मतलब है कि निम्नलिखित है: जब मैं स्पा को जावास्क्रिप्ट में कोड कर रहा हूं, तो मुझे पता होना चाहिए कि कोड लिखने के लिए एपीआई में क्या किया जा सकता है।
इसलिए मुझे संसाधनों, समर्थित विधियों, जो वे प्राप्त करने की अपेक्षा करते हैं और जो वे वापस देने के लिए सर्वर को अजाक्स कॉल लिखने के लिए और यहां तक कि यूआई बनाने के लिए भी जानने की आवश्यकता है। जब मैं UI का निर्माण करता हूं, तो मुझे पता होना चाहिए कि खाता का अनुरोध करने के बाद, उदाहरण के लिए इसमें जमा किया जा सकता है, या मैं UI पर यह विकल्प प्रदान नहीं कर पाऊंगा। इसके अलावा, मुझे ajax कॉल बनाने के लिए जमा करने के लिए URI को जानना होगा।
मेरा क्या मतलब है, जब हम एपीआई के लिए अनुरोध करते हैं, तो लिंक हमें एपीआई को बेहतर ढंग से खोजने और उपयोग करने की अनुमति देता है, लेकिन जब हम एक ग्राहक का निर्माण करते हैं, तो हम जिस एप्लिकेशन का निर्माण कर रहे हैं, वह केवल लिंक को नहीं देखेगा और फिर खुद को प्रस्तुत करेगा। सही UI और सही ajax कॉल करें।
तो, ग्राहकों के लिए HATEOAS कैसे महत्वपूर्ण है? हम वैसे भी HATEOAS से परेशान क्यों हैं?