हाल ही में मैं हाइपरमेडिया के बारे में एप्लीकेशन स्टेट (HATEOAS) के इंजन के रूप में पढ़ रहा हूं, एक वेब एपीआई को "सही मायने में RESTful" बनाने का दावा करने वाली बाधा। यह मूल रूप से उबलता है जिसमें वर्तमान स्थिति से आपके द्वारा किए जा सकने वाले संभावित बदलावों की हर प्रतिक्रिया के लिंक शामिल हैं।
मुझे यह समझाइए कि मेरी समझ के आधार पर HATEOAS क्या है - और अगर मैंने कुछ याद किया तो कृपया मुझे सही करें।
/
GET: {
"_links": {
"child": [
{ "href": "http://myapi.com/articles", "title": "articles" }
]
}
}
/articles?contains=HATEOAS
GET: {
"_items": [
{ "uri": "http://myapi.com/articles/0", "title": "Why Should I Care About HATEOAS?" },
{ "uri": "http://myapi.com/articles/1", "title": "HATEOAS: Problem or Solution?" }
],
"_links": {
"self": { "href": "http://myapi.com/articles", "title": "articles" },
"parent": { "href": "http://myapi.com/", "title": "home" }
}
}
POST: {
"title": "A New Article",
"body": "Article body",
"tags": [ "tag1", "tag2" ]
}
/articles/0
GET: {
"title": "Why Should I Care About HATEOAS?",
"body": "Blah blah blah"
"tags": [ "REST", "HATEOAS" ],
"_links": {
"self": { "href": "http://myapi.com/articles/0", "title": "article" },
"parent": { "href": "http://myapi.com/articles", "title": "articles" }
}
}
HATEOAS को दो प्रमुख लाभ प्रदान करने का दावा किया जाता है:
संपूर्ण सेवा खोज योग्य प्रारंभिक रूप है मूल URI, दस्तावेज़ीकरण की अब आवश्यकता नहीं है।
क्लाइंट को उस सर्वर से हटा दिया जाता है जो अब URI संरचना को स्वतंत्र रूप से बदल सकता है। यह एपीआई संस्करण की आवश्यकता को समाप्त करता है।
लेकिन मेरे विचार में, एक सेवा अपनी यूआरआई संरचना से बहुत अधिक है। इसे प्रभावी ढंग से उपयोग करने के लिए, आपको यह भी जानना होगा:
- आप किस क्वेरी पैरामीटर का उपयोग कर सकते हैं और उनके संभावित मान
- JSON / XML / आपके दस्तावेज़ों को आपके POST / PATCH / etc अनुरोधों में भेजने की आवश्यकता है
- सर्वर द्वारा भेजे गए प्रतिक्रिया की संरचना
- संभावित त्रुटियां जो हो सकती हैं
- ...
उपरोक्त के आधार पर, HATEOAS केवल खोज और युग्मन समस्याओं के एक छोटे से अंश को हल करता है। आपको अभी भी उपरोक्त चार पहलुओं का दस्तावेजीकरण करने की आवश्यकता है और क्लाइंट अभी भी इनकी वजह से सर्वर से मजबूती से जुड़े रहेंगे। ब्रेकिंग क्लाइंट से बचने के लिए, आपको अभी भी अपना एपीआई संस्करण बनाना होगा।
इसका एकमात्र लाभ यह है कि आप अपने URL ढांचे को कम या ज्यादा स्वतंत्र रूप से बदल सकते हैं (वैसे, सिद्धांत "कूल यूआरआईज़ नहीं बदलते हैं ? " ) क्या हुआ । क्या मेरी समझ सही है?