क्या HATEOAS का उपयोग करके REST सेवाओं की खोज के लिए रणनीतियाँ हैं?


10

HATEOAS बाधा के साथ REST सेवा का निर्माण करते समय , लिंकिंग के माध्यम से संसाधनों के अस्तित्व का विज्ञापन करना बहुत आसान है। आप GETमेरी साइट के मूल में हैं और मैं सभी प्रथम श्रेणी संसाधनों को सूचीबद्ध करने वाले मूल दस्तावेज के साथ प्रतिक्रिया देता हूं:

{
    users: { href: "/users" }
    questions { href: "/questions" }
}

ग्राहक जो समझते हैं कि इन hrefमूल्यों को कैसे पढ़ना है, GETउन पर अनुरोध कर सकते हैं और आवेदन में उपलब्ध सभी मौजूदा संसाधनों की खोज कर सकते हैं ।

यह मूल लुकअप परिदृश्यों के लिए अच्छी तरह से काम करता है, लेकिन यह इंगित नहीं करता है कि संसाधन क्वेरी योग्य है या नहीं। उदाहरण के लिए, प्रदर्शन करना उचित हो सकता है:

GET /users?surname=Smith

क्या कोई प्रारूप है जो इस क्वेरी की क्षमता को पर्याप्त जानकारी के साथ व्यक्त कर सकता है कि ग्राहक संसाधन के पूर्व ज्ञान के बिना एक सुसंगत क्वेरी बना सकता है?

इसके अतिरिक्त, यह व्यक्त करने का कोई तरीका है कि ग्राहक POSTको किसी दिए गए स्थान पर अपेक्षित स्थान के साथ प्रदर्शन करने की अनुमति है । उदाहरण के लिए, यह उम्मीद की जा सकती है कि एक ग्राहक एक नया प्रश्न संसाधन बनाने के लिए निम्नलिखित कार्य करे:

POST /questions

{
    title: "Are there strategies for discovering REST services using HATEOAS?",
    body: "When building a REST service with the HATEOAS constraint, it's very..."
}

मानव उपभोग के लिए प्रारूप के रूप में HTML का उपयोग करते समय, हम प्रपत्रों के उपयोग के माध्यम से इसे बहुत कुछ व्यक्त कर सकते हैं और लिखित संकेतों के माध्यम से मानव को उन कार्यों की खोज करने की अनुमति देते हैं जो उन्हें सेवा पर प्रदर्शन करने की अनुमति है।

क्या ऐसे प्रारूप हैं जो ग्राहकों के लिए समान चीजों में सक्षम हैं?


2
REST- सेवा की खोज के साथ इस मुद्दे पर चर्चा की गई है और यहां उत्तर दिया गया है: stackoverflow.com/questions/9101494/… सबसे सरल समाधान एक एक्सएचटीएमएल टेम्पलेट का उपयोग एक ऐसे फॉर्म के साथ करना है जो न केवल आपके द्वारा उपयोग की जाने वाली विधि के बारे में बताएगा, बल्कि इसका उपयोग भी कर सकता है। ऑब्जेक्ट संरचना को प्रपत्र तत्वों (इनपुट, चयन आदि) के माध्यम से भेजा जाना है। ग्राहकों को केवल एक XML पार्सर की आवश्यकता होती है जो उन्हें चाहिए। एक और तरीका यूआरएल टेम्प्लेट के साथ है, लेकिन वे केवल उन संसाधनों के साथ मदद करते हैं जो क्वेरी स्ट्रिंग लेते हैं।
स्कोइक जूल

सामग्री प्रकारों के बारे में; यह सामग्री बातचीत के साथ हल किया जाता है जो HTTP हेडर में किया जाता है। यदि सर्वर अनुरोधित सामग्री प्रकार की सेवा नहीं कर सकता है, तो उसे HTTP त्रुटि (जैसे 300 या 406) यह बताते हुए लौटानी चाहिए कि वह किस प्रकार की सामग्री वापस कर सकती है।
स्कोइक

जवाबों:


1

आपको कैसे पता चलेगा कि किस तरह के इनपुट स्वीकार्य हैं? यह कहना है, यदि आपके ग्राहक को कोई पूर्व ज्ञान नहीं है, तो आप "उपनाम" के शब्दार्थ को कैसे परिभाषित करेंगे? आप OWL जैसी किसी चीज़ की ज़रूरत के क्षेत्र में आने लगे हैं ।

मुझे लगता है कि अपने ग्राहकों को अच्छी तरह से ज्ञात माइम-प्रकार के शब्दार्थ को समझने की अपेक्षा करना अधिक व्यावहारिक है; उदाहरण के लिए, लोगों के लिए "पाठ / vcard"।


मुझे लगता है कि सामग्री प्रकार का उपयोग जाने का तरीका है; मैं आसानी से application/atomapp+xmlइस प्रारूप को समझने वाले सभी ग्राहकों के लिए उपयोग करने और उपलब्ध कराने के लिए अपने एप्लिकेशन को बदल सकता था । इसको एक व्यावहारिक समाधान बनाने के लिए पर्याप्त प्रसिद्ध प्रकार हैं।
पॉल टर्नर

मुझे लगता है कि @ साइकाइक द्वारा टिप्पणी समस्या के अन्य आधे हिस्से के लिए एक सुरुचिपूर्ण REST-ian दृष्टिकोण है; भले ही ग्राहक को पता हो कि (उदाहरण के लिए) किसी उपयोगकर्ता को vCard के रूप में दर्शाया गया है, फिर भी यह जानना आवश्यक है कि उपयोगकर्ता के गुणों का सबसेट क्या खोज करने के लिए उपलब्ध है।
स्टीफन जे। एंडरसन

4

आप "WADL" के माध्यम से अपनी सेवाओं पर विवरण प्रकाशित कर सकते हैं

http://en.wikipedia.org/wiki/Web_Application_Description_Language

यह वैकल्पिक है और प्रत्येक बैकएंड REST टेक्नो इसका समर्थन नहीं करता है। जर्सी, जैक्स-आरएस के "आधिकारिक" जावा कार्यान्वयन, उदाहरण के लिए इसका समर्थन करता है - यह आपके लिए स्वचालित रूप से उत्पन्न हो सकता है।

हालांकि यह काफी दुर्लभ है, इसका इस्तेमाल करने के लिए।

मुझे इसका उपयोग करने वाले बड़े लोगों का पता नहीं है। सामान्य तौर पर आपके पास एपीआई का वर्णन करने वाला एक वेब पेज होता है।


1
CXF एक और बड़ा जावा JAX-RS कार्यान्वयन है जो WADL का समर्थन करता है, और अब आप कुछ दिलचस्प तृतीय-पक्ष WADL उपभोक्ताओं को भी देखना शुरू कर रहे हैं।
डोनाल्ड फेलो

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.