सीधे शब्दों में कहें, तो आप इसे पूरी तरह से पिछड़ा हुआ कर रहे हैं।
आपको इस बात से संपर्क नहीं करना चाहिए कि आप किन URLs का उपयोग कर रहे हैं। आपके सिस्टम के लिए कौन से संसाधन आवश्यक हैं, और आप उन संसाधनों का प्रतिनिधित्व कैसे करेंगे, और संसाधनों और अनुप्रयोग स्थिति के बीच पारस्परिक क्रियाओं के बारे में निर्णय लेने के बाद, URL प्रभावी रूप से "मुफ़्त में" आएगा।
रॉय फील्डिंग को उद्धृत करने के लिए
REST API को अपने सभी वर्णनात्मक प्रयासों को संसाधनों और ड्राइविंग एप्लिकेशन राज्य का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले मीडिया प्रकार (ओं) को परिभाषित करने में, या मौजूदा मानक मीडिया प्रकारों के लिए विस्तारित संबंध नामों और / या हाइपरटेक्स्ट-सक्षम मार्क-अप को परिभाषित करने में खर्च करना चाहिए। किसी भी प्रकार के यूआरआई को एक मीडिया प्रकार के लिए प्रसंस्करण नियमों के दायरे में (और, ज्यादातर मामलों में, पहले से ही मौजूदा मीडिया प्रकारों द्वारा परिभाषित किया गया है) का उपयोग करने के लिए क्या विधियों का उपयोग करना चाहिए, यह बताने में खर्च किए गए किसी भी प्रयास। [यहाँ असफलता का अर्थ है कि बाहर की जानकारी हाइपरटेक्स्ट के बजाय बातचीत चला रही है।]
फोल्क्स हमेशा यूआरआई के साथ शुरू होते हैं और सोचते हैं कि यह समाधान है, और फिर वे आरईएसटी आर्किटेक्चर में एक महत्वपूर्ण अवधारणा को याद करते हैं, विशेष रूप से, जैसा कि ऊपर उद्धृत किया गया है, "यहां विफलता का मतलब है कि हाइपरटेक्स्ट के बजाय आउट-ऑफ-बैंड जानकारी इंटरैक्शन चला रही है। "
ईमानदार होने के लिए, कई यूआरआई और कुछ जीईटी और पीयूटी और पोस्ट का एक गुच्छा देखते हैं और सोचते हैं कि आरईएसटी आसान है। आराम करना आसान नहीं है। HTTP पर RPC आसान है, HTTP पेलोड के माध्यम से प्रॉक्साइड डेटा को आगे पीछे करना आसान है। हालाँकि, इससे भी आगे निकल जाता है। REST प्रोटोकॉल अज्ञेयवादी है। REST सिस्टम के लिए HTTP बहुत लोकप्रिय और उपयुक्त है।
REST मीडिया प्रकारों, उनकी परिभाषाओं में रहता है, और कैसे एप्लिकेशन हाइपरटेक्स्ट (लिंक, प्रभावी रूप से) के माध्यम से उन संसाधनों के लिए उपलब्ध कार्यों को चलाता है।
REST सिस्टम में मीडिया प्रकारों के बारे में अलग-अलग दृष्टिकोण हैं। कुछ पक्ष विशिष्ट पेलोड को लागू करते हैं, जबकि अन्य मौजूदा मीडिया प्रकारों को उन भूमिकाओं में बदलना पसंद करते हैं जो आवेदन के लिए उपयुक्त हैं। उदाहरण के लिए, एक तरफ आपके पास विशिष्ट XML स्कीमा है जिसे आपके आवेदन के अनुकूल बनाया गया है, जो आपके प्रतिनिधित्व के रूप में एक्सएचटीएमएल जैसी किसी चीज़ का उपयोग कर रहा है, शायद माइक्रोफ़ॉर्मेट्स और अन्य तंत्रों के माध्यम से।
दोनों दृष्टिकोणों में अपनी जगह है, मुझे लगता है, एक्सएचटीएमएल परिदृश्यों में बहुत अच्छी तरह से काम कर रहा है जो मानव संचालित और मशीन संचालित वेब दोनों को ओवरलैप करते हैं, जबकि पूर्व, अधिक विशिष्ट डेटा प्रकार मुझे मशीन इंटरैक्शन के लिए बेहतर सुविधा प्रदान करते हैं। मुझे लगता है कि कमोडिटी प्रारूपों के उत्थान से सामग्री की बातचीत संभावित रूप से कठिन हो सकती है। "एप्लिकेशन / xml + yourresource" "एप्लिकेशन / xhtml + xml" की तुलना में मीडिया प्रकार के रूप में बहुत अधिक विशिष्ट है, क्योंकि उत्तरार्द्ध कई पेलोड पर लागू हो सकता है जो मशीन ग्राहक वास्तव में रुचि रखते हैं या नहीं हो सकते हैं, न ही ऐसा हो सकता है। आत्मनिरीक्षण के बिना निर्धारित करें।
हालाँकि, XHTML मानव वेब में बहुत अच्छी तरह से (स्पष्ट रूप से) काम करता है जहाँ वेब ब्राउज़र और रेंडरिंग बहुत महत्वपूर्ण है।
आप आवेदन उन प्रकार के निर्णयों में आपका मार्गदर्शन करेंगे।
REST सिस्टम को डिज़ाइन करने की प्रक्रिया का एक हिस्सा प्राथमिक सिस्टम पर संचालन का समर्थन करने के लिए आवश्यक व्युत्पन्न, समर्थन संसाधनों के साथ-साथ आपके सिस्टम में प्रथम श्रेणी के संसाधनों की खोज कर रहा है। एक बार जब संसाधनों की खोज की जाती है, तो उन संसाधनों का प्रतिनिधित्व, साथ ही साथ राज्य के आरेख, जो प्रतिनिधित्व के भीतर हाइपरटेक्स्ट के माध्यम से संसाधन प्रवाह दिखाते हैं क्योंकि अगली चुनौती है।
याद रखें कि एक संसाधन का प्रत्येक प्रतिनिधित्व, एक हाइपरटेक्स्ट सिस्टम में, संसाधन के लिए उपलब्ध राज्य संक्रमण के साथ वास्तविक संसाधन प्रतिनिधित्व दोनों को जोड़ता है। प्रत्येक संसाधन को एक ग्राफ में एक नोड पर विचार करें, लिंक के साथ उस नोड को अन्य राज्यों में छोड़ दिया जा रहा है। ये लिंक ग्राहकों को न केवल यह सूचित करते हैं कि क्या किया जा सकता है, बल्कि उनके लिए क्या आवश्यक है (जैसा कि एक अच्छा लिंक URI और मीडिया प्रकार को जोड़ता है)।
उदाहरण के लिए, आपके पास हो सकता है:
<link href="http://example.com/users" rel="users" type="application/xml+usercollection"/>
<link href="http://example.com/users?search" rel="search" type="application/xml+usersearchcriteria"/>
आपके दस्तावेज़ "उपयोगकर्ता" नाम के रिले फ़ील्ड और "एप्लिकेशन / xml + youruser" के मीडिया प्रकार के बारे में बात करेंगे।
ये लिंक बेमानी लग सकते हैं, वे सभी एक ही यूआरआई से बात कर रहे हैं, बहुत ज्यादा। लेकिन वे नहीं हैं।
ऐसा इसलिए है क्योंकि "उपयोगकर्ता" संबंध के लिए, वह लिंक उपयोगकर्ताओं के संग्रह के बारे में बात कर रहा है, और आप संग्रह के साथ काम करने के लिए एकसमान इंटरफ़ेस का उपयोग कर सकते हैं (उन सभी को पुनः प्राप्त करने के लिए, इन सभी को हटाने के लिए DELETE, आदि)
यदि आप इस URL पर POST करते हैं, तो आपको "एप्लिकेशन / xml + usercollection" दस्तावेज़ पास करना होगा, जिसमें संभवतः दस्तावेज़ में केवल एक उपयोगकर्ता का उदाहरण होगा, ताकि आप उपयोगकर्ता को जोड़ सकें, या नहीं, शायद, कई को जोड़ने के लिए एक बार। शायद आपके प्रलेखन का सुझाव होगा कि आप संग्रह के बजाय केवल एक उपयोगकर्ता प्रकार पास कर सकते हैं।
आप यह देख सकते हैं कि किसी खोज को करने के लिए एप्लिकेशन की क्या आवश्यकता है, जैसा कि "खोज" लिंक द्वारा परिभाषित किया गया है और यह मध्यस्थ है। खोज मीडिया प्रकार के लिए प्रलेखन आपको बताएगा कि यह कैसे व्यवहार करता है, और परिणाम के रूप में क्या उम्मीद है।
हालांकि, Ueas खुद मूल रूप से महत्वहीन हैं, हालांकि यहाँ टेकअवे। आवेदन URIs के नियंत्रण में है, न कि ग्राहकों के लिए। कुछ 'प्रवेश बिंदुओं' से परे, आपके ग्राहकों को अपने काम के लिए आवेदन द्वारा प्रदान किए गए यूआरआई पर भरोसा करना चाहिए।
क्लाइंट को मीडिया प्रकारों में हेरफेर और व्याख्या करने का तरीका जानने की जरूरत है, लेकिन यह ध्यान रखने की ज़रूरत नहीं है कि यह कहाँ जाता है।
ये दोनों लिंक ग्राहकों की दृष्टि में समान हैं:
<link href="http://example.com/users?search" rel="search" type="application/xml+usersearchcriteria"/>
<link href="http://example.com/AW163FH87SGV" rel="search" type="application/xml+usersearchcriteria"/>
इसलिए अपने संसाधनों पर ध्यान दें। आवेदन में उनके राज्य परिवर्तन पर ध्यान दें और यह सबसे अच्छा कैसे हासिल किया जाता है।