मुझे जो कुछ पता चला कि मैं REST के बारे में जानता था, वह बड़ी मात्रा में गलत है - और मैं अकेला नहीं हूँ। इस प्रश्न का एक लंबा लीड-इन है, लेकिन यह आवश्यक प्रतीत होता है क्योंकि जानकारी थोड़ी बिखरी हुई है। यदि आप पहले से ही इस विषय से परिचित हैं तो वास्तविक प्रश्न सबसे अंत में आता है।
रॉय फील्डिंग के REST एपीआई के पहले पैराग्राफ से हाइपरटेक्स्ट-चालित होना चाहिए , यह स्पष्ट है कि उनका मानना है कि उनके काम का व्यापक रूप से गलत अर्थ निकाला जा रहा है:
मैं किसी HTTP- आधारित इंटरफ़ेस को REST API कहने वाले लोगों की संख्या से निराश हो रहा हूं। आज का उदाहरण SocialSite REST API है । वह आरपीसी है। यह RPC चिल्लाती है। डिस्प्ले पर इतना कपलिंग है कि इसे एक्स रेटिंग दी जानी चाहिए।
फ़ील्डिंग एक REST API की कई विशेषताओं को सूचीबद्ध करता है। उनमें से कुछ एसओ और अन्य मंचों पर सामान्य अभ्यास और सामान्य सलाह दोनों के खिलाफ जाते हैं। उदाहरण के लिए:
REST API को प्रारंभिक URI (बुकमार्क) से परे कोई पूर्व ज्ञान के साथ दर्ज किया जाना चाहिए और मानकीकृत मीडिया प्रकारों का सेट जो कि इच्छित श्रोताओं के लिए उपयुक्त हो (यानी, किसी भी क्लाइंट द्वारा समझा जा सकता है जो एपीआई का उपयोग कर सकता है)। ...
REST API को निश्चित संसाधन नामों या पदानुक्रमों (क्लाइंट और सर्वर का स्पष्ट युग्मन) को परिभाषित नहीं करना चाहिए। ...
REST API को अपने सभी वर्णनात्मक प्रयासों को संसाधनों और ड्राइविंग एप्लिकेशन स्थिति का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले मीडिया प्रकार (ओं) को परिभाषित करने में, या मौजूदा मानक मीडिया प्रकारों के लिए विस्तारित संबंध नामों और / या हाइपरटेक्स्ट-सक्षम मार्क-अप को परिभाषित करने में खर्च करना चाहिए। ...
"हाइपरटेक्स्ट" का विचार केंद्रीय भूमिका निभाता है - यूआरआई संरचना की तुलना में बहुत अधिक या HTTP क्रियाओं का क्या मतलब है। "हाइपरटेक्स्ट" को टिप्पणियों में से एक में परिभाषित किया गया है:
जब मैं [क्षेत्ररक्षण] हाइपरटेक्स्ट कहता हूं, तो मेरा मतलब है सूचना की एक साथ प्रस्तुति और नियंत्रण ऐसा है कि सूचना वह व्यय बन जाती है जिसके माध्यम से उपयोगकर्ता (या ऑटोमेटन) विकल्प प्राप्त करता है और कार्यों का चयन करता है। हाइपरमीडिया केवल एक विस्तार है जो पाठ को मीडिया स्ट्रीम में अस्थायी एंकर शामिल करने का मतलब है; अधिकांश शोधकर्ताओं ने अंतर छोड़ दिया है।
हाइपरटेक्स्ट को ब्राउज़र पर HTML होने की आवश्यकता नहीं है। जब वे डेटा प्रारूप और संबंध प्रकारों को समझते हैं तो मशीनें लिंक का अनुसरण कर सकती हैं।
मैं इस बिंदु पर अनुमान लगा रहा हूं, लेकिन ऊपर दिए गए पहले दो बिंदु सुझाव देते प्रतीत होते हैं कि फू संसाधन के लिए एपीआई दस्तावेज जो निम्न की तरह दिखता है, क्लाइंट और सर्वर के बीच युग्मन को तंग करता है और एक रिस्टफुल सिस्टम में कोई जगह नहीं है।
GET /foos/{id} # read a Foo
POST /foos/{id} # create a Foo
PUT /foos/{id} # update a Foo
इसके बजाय, एक एजेंट को सभी Foos के लिए URI की खोज करने के लिए मजबूर किया जाना चाहिए, उदाहरण के लिए, / foos के खिलाफ GET अनुरोध जारी करना। (वे यूआरआई उपरोक्त पैटर्न का पालन करने के लिए बाहर निकल सकते हैं, लेकिन यह उस बिंदु के बगल में है।) प्रतिक्रिया एक मीडिया प्रकार का उपयोग करती है जो यह बताने में सक्षम है कि प्रत्येक आइटम का उपयोग कैसे किया जा सकता है और इसके साथ क्या किया जा सकता है, ऊपर तीसरे बिंदु को जन्म देता है। । इस कारण से, एपीआई प्रलेखन को यह समझाने पर ध्यान केंद्रित करना चाहिए कि प्रतिक्रिया में निहित हाइपरटेक्स्ट की व्याख्या कैसे करें।
इसके अलावा, हर बार एक फू संसाधन के लिए एक यूआरआई का अनुरोध किया जाता है, प्रतिक्रिया में एक एजेंट के लिए आवश्यक सभी जानकारी शामिल होती है जिससे पता चलता है कि कैसे आगे बढ़ना है, उदाहरण के लिए, अपने यूआरआई के माध्यम से संबद्ध और माता-पिता के संसाधनों तक पहुंचना, या निर्माण के बाद कार्रवाई करना। / एक संसाधन का विलोपन।
संपूर्ण प्रणाली की कुंजी यह है कि प्रतिक्रिया में एक मीडिया प्रकार में निहित हाइपरटेक्स्ट शामिल होता है जो खुद को आगे बढ़ने के लिए एजेंट विकल्पों के लिए बताता है। यह उस तरीके के विपरीत नहीं है जिस तरह एक ब्राउज़र मनुष्यों के लिए काम करता है।
लेकिन इस विशेष क्षण में यह मेरा सबसे अच्छा अनुमान है।
क्षेत्ररक्षण ने एक अनुवर्ती पोस्ट किया जिसमें उन्होंने आलोचना की कि उनकी चर्चा बहुत सारगर्भित थी, उदाहरणों की कमी थी, और शब्दजाल-समृद्ध:
अन्य लोग जो मैंने लिखा है उसे समझने की कोशिश करेंगे जो आज के कुछ व्यावहारिक सरोकारों से अधिक प्रत्यक्ष या लागू हैं। मैं शायद नहीं करूंगा, क्योंकि मैं अगले विषय के साथ बहुत व्यस्त हूं, एक सम्मेलन की तैयारी कर रहा हूं, एक और मानक लिख रहा हूं, कुछ दूर की यात्रा कर रहा हूं, या बस कुछ चीजें कर रहा हूं जो मुझे लगता है कि मैंने अपनी तनख्वाह अर्जित कर ली है।
इसलिए, रीस्ट विशेषज्ञों के लिए दो सरल प्रश्न व्यावहारिक मानसिकता के साथ हैं: आप यह कैसे व्याख्या करते हैं कि फील्डिंग क्या कह रही है और रीस्ट एपीआई को दस्तावेज / लागू करते समय आप इसे कैसे व्यवहार में लाते हैं?
संपादित करें: यह प्रश्न इस बात का एक उदाहरण है कि अगर आप जिस बारे में बात कर रहे हैं, उसके लिए आपके पास नाम नहीं है, तो कुछ सीखना कितना कठिन हो सकता है। इस मामले में नाम "हाइपरमेडिया ऑफ द इंजन ऑफ एप्लीकेशन स्टेट" (HATEOAS) है।