जब किसी भी तरह से ग्राहक इसका उपयोग करने के लिए पर्याप्त उन्नत नहीं होते हैं तो REST एपीआई में 'खोज' की क्या आवश्यकता है?


20

REST पर मैंने जिन विभिन्न वार्ताओं को देखा है और जिन्हें मैंने स्कैन किया है, वे 'खोज' नामक किसी चीज़ पर बल देती हैं। मेरी सीमित समझ के लिए, इस शब्द का अर्थ लगता है कि एक ग्राहक को जाने में सक्षम होना चाहिए http://URL- और स्वचालित रूप से उन चीजों की एक सूची प्राप्त करें जो यह कर सकते हैं।

मुझे समझने में जो परेशानी हो रही है - वह यह है कि 'सॉफ्टवेयर क्लाइंट' इंसान नहीं हैं। वे केवल ऐसे कार्यक्रम हैं जिन्हें समझने के लिए सहज ज्ञान नहीं है कि प्रदान किए गए लिंक के साथ क्या करना है। केवल लोग एक वेबसाइट पर जा सकते हैं और प्रस्तुत पाठ और लिंक की समझ बना सकते हैं और उस पर कार्य कर सकते हैं।

तो खोज योग्यता का क्या मतलब है, जब ऐसे खोज योग्य URL तक पहुँचने वाले ग्राहक कोड वास्तव में इसके साथ कुछ नहीं कर सकते, जब तक कि ग्राहक का मानव डेवलपर वास्तव में प्रस्तुत संसाधनों के साथ प्रयोग नहीं करता है? यह बिल्कुल एक ही दिशा में उपलब्ध कार्यों के सेट को परिभाषित करने की तरह ही दिखता है, बस एक अलग दिशा से और वास्तव में डेवलपर के लिए अधिक काम शामिल है। पूर्व-परिभाषित करने का यह दूसरा तरीका क्या है, जो वास्तविक रीस्ट संसाधनों के लिए एक दस्तावेज में किया जा सकता है, जिसे हीन माना जाता है?

जवाबों:


9

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


हां, मुझे लगता है कि मैं इसका अर्थ समझ सकता हूं ... लेकिन क्या आप कृपया मुझे एक ठोस कोड उदाहरण के साथ लिंक करने के लिए भी कह सकते हैं? खोज योग्य URL के साथ एम्बेडेड संसाधन भविष्य के लिए बेहतर बीमा कैसे प्रदान करता है, इसके बीच एक 'बनाम' परिवर्तन
आदित्य एमपी

क्षमा करें, कोई लिंक नहीं। बस सामान्य ज्ञान और सर्वर ग्राहकों को पुराने ग्राहकों के साथ संगत रखने के लिए ऐप में कोड बनाए रखने के वर्षों। जब भी आपके पास एक क्लाइंट / सर्वर प्रकार की स्थिति होती है, तो आपको पुराने क्लाइंट के साथ संगत सर्वर की आवश्यकता होती है क्योंकि आप एक पुराने क्लाइंट को एक बार तैनात नहीं कर सकते। यह तब भी माना जाता है जब आप वेब क्लाइंट और सर्वर कोड दोनों को नियंत्रित करते हैं और हमेशा उन्हें एक पूरे के रूप में वितरित करते हैं: आप विकास के दौरान सिरदर्द के बिना कर सकते हैं ताकि एक वेब क्लाइंट टीम बैक एंड टीम से यथासंभव स्वतंत्र रूप से विकसित हो सके।
मार्जन वेंमा

हाय मार्जन, बस इतना कहना चाहता था कि, मैं इस जवाब पर वापस आता रहता हूं कि उस पर वोट गतिविधि का b / c है, और आपके उत्तर दिए जाने के लगभग डेढ़ साल बाद, मुझे पूरी तरह से समझ में आया कि आपको "लिंक" की आवश्यकता के बिना: D धैर्य रखने और इस महान उत्तर के लिए धन्यवाद :-)
आदित्य एमपी

खुशी है कि यह आपके लिए उपयोगी था @ AdityaMP
Marjan Venema

6

"ग्राहक" इसका उपयोग करने के लिए पर्याप्त उन्नत नहीं हो सकते हैं, लेकिन ग्राहकों के उपयोगकर्ता कर सकते हैं। एक ग्राहक एक वेब ब्राउज़र के रूप में कुछ सरल हो सकता है, सब के बाद। खोजशीलता लोगों को एपीआई सीखने और उपयोग करने में सक्षम बनाने के बारे में है

उदाहरण के लिए, जेनकिंस (CI सर्वर) में REST जैसा इंटरफ़ेस होता है। किसी भी पृष्ठ पर जाएं, URL को "/ api" के साथ पोस्टफ़िक्स करें, और आपको एक पेज मिल जाए जिसमें आप जो कुछ भी कर सकते हैं उसका वर्णन करें। यह एपीआई को तुच्छ बनाना सीखता है। उदाहरण के लिए, http://ci.jruby.org आपको jruby के लिए जेनकींस सर्वर पर ले जाता है , और http://ci.jruby.org/api आपको उस विशिष्ट पृष्ठ के लिए एपीआई में ले जाता है।


6

मुझे कुछ समय पहले एक एपीआई के साथ काम करने में खुशी मिली थी जिसमें दस्तावेज़ीकरण था जो बहुत, समझने में बहुत कठिन था।

एक बार जब मैं सर्वर से एक वास्तविक उत्तर प्राप्त करने में कामयाब हो गया, तो यह संभव था कि दस्तावेज़ीकरण की तुलना सर्वर उत्तर के साथ की जाए और उस दस्तावेज़ को समझने के लिए उपयोग किया जाए (और हाँ, इसे सही समय पर परिभाषित करना)। समस्या यह थी कि अगर सर्वर के लिए एक अनुरोध भेजा गया था जो कि कल्पना के अनुसार बिल्कुल सही नहीं था, तो आपको बस एक त्रुटि मिलेगी, और अपठनीय प्रलेखन के साथ, यह पता लगाना कि सही अनुरोध कैसे भेजना असंभव के करीब था। एपीआई प्रलेखन के विभिन्न संस्करण भी थे जो एक-दूसरे से सहमत नहीं थे और शायद एपीआई के साथ ही सहमत नहीं थे; यह मदद नहीं की।

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


5

नोट: मैं इस विषय का कोई विशेषज्ञ नहीं हूं, लेकिन मैं कुछ साल पहले "REST" के लोगों की व्याख्याओं की विभिन्न बारीकियों को समेटने की कोशिश की एक समान प्रक्रिया से गुजरा था, और यही वह तरीका है जो मुझे इस पर देखने से मिला। समय।

मेरी समझ में, यह रॉय फील्डिंग के हाइपरमीडिया से एप्लीकेशन स्टेट उर्फ "हेटोएएस" के इंजन के रूप में उपजा है , जो तब एक "सिमेंटिक वेब" के विचार का एक प्रवर्तक बन जाता है।

तो ... मूल रूप से, और फिर से जैसा कि मैं इसे समझता हूं, आप अपने मूल आवेदन को मूल रूप से स्वयं का वर्णन करते हैं ताकि उपभोक्ता को आपकी सामग्री / कार्यक्षमता का उपभोग करने के लिए औपचारिक अनुबंध का पूर्व ज्ञान न हो। वे कुछ डिफॉल्ट रूट एंडपॉइंट से जुड़ने में सक्षम हैं और फिर प्रासंगिक रूप से प्रासंगिक लिंक चलते हैं जो आपका ऐप उपभोक्ता को इंटरैक्ट प्रदान करता है। उपभोक्ता, निश्चित रूप से, एक व्यक्ति या एक प्रणालीगत एजेंट हो सकता है।

यदि आप CRUD संचालन के लिए मैप किए गए सुंदर यूआरएल के लिए सिर्फ "REST" का उपयोग कर रहे हैं जो कि एक प्रसिद्ध अनुबंध के अनुसार एक उपभोक्ता को पहले से पता होना चाहिए और कॉल करना होगा, रॉय फील्डिंग इसे वास्तव में Restful नहीं समझेगी।

यह कहना नहीं है कि एक REST सुगंधित RPC सेवा की स्थापना उपयोगी नहीं हो सकती है / एक अधिक विस्तृत RPC मॉडल पर सुधार और सीमित / नियंत्रित उपयोग के लिए उपयुक्त है, लेकिन हार्डलाइनर इस पर अपनी नाक देखेंगे और इसे पतित होने पर विचार करेंगे / वास्तव में नहीं।

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