खैर, बहुत सारे तरीके हैं जानने के लिए कि कैसे एक RESTful वेब एप्लिकेशन का निर्माण किया जाए और नहीं, कोई अनूठा सही तरीका नहीं है। रेस्टफुल एक मानक नहीं है, लेकिन यह मानकों (HTTP, URI, माइम टाइप, ...) के एक सेट का उपयोग करता है।
इसके साथ शुरू करें: मैंने अपनी पत्नी को कैसे समझाया
फिर, इसके साथ आगे बढ़ें: Restful Web Services Cookbook
और फिर वेब अनुप्रयोगों को विकसित करने के लिए अपना पूरा प्रयास करें क्योंकि सीखने का सबसे अच्छा तरीका प्रयोग कर रहा है और आप अपनी गलतियों से बहुत कुछ सीख सकते हैं;)
अगर आपका पहला वेब ऐप पूरी तरह से Restful नहीं होगा, तो चिंता न करें: आपको इसे करने का तरीका मिल जाएगा!
तो, ओबी-वान केनबी को उद्धृत करते हुए, "बल आपके साथ हो सकता है!" ;)
संपादित करें
ठीक है, मुझे और अधिक विशिष्ट होने दें।
तुम कुछ खुश करना चाहते हैं webapp, हुह? खैर, जैसा कि मैंने कहा कि इसे करने के कई तरीके हैं लेकिन यह मुख्य दिशानिर्देश है।
परिभाषा
REST (प्रतिनिधि राज्य स्थानांतरण) वितरित प्रणाली (जैसे WWW) के लिए एक सॉफ्टवेयर आर्किटेक्चर की शैली है। यह एक मानक नहीं है, लेकिन यह मानकों के एक सेट का उपयोग करता है: HTTP, AJAX, HTML, URI, माइम प्रकार, आदि। हम किसी संसाधन के प्रतिनिधित्व के बारे में बात कर रहे हैं, न कि किसी संसाधन के बारे में। 'मैंने अपनी पत्नी को कैसे समझाए' से लिया:
पत्नी : एक वेब पेज एक संसाधन है?
रयान : की तरह। एक वेब पेज एक संसाधन का एक प्रतिनिधित्व है। संसाधन सिर्फ अवधारणाएं हैं।
आर्किटेक्चर की बाधाएं
- क्लाइंट-सर्वर : क्लाइंट और सर्वर यूनिफ़ॉर्म इंटरफ़ेस (नीचे वर्णित) द्वारा अलग किए जाते हैं।
- स्टेटलेस : सर्वर-क्लाइंट संचार सर्वर पर किसी विशेष क्लाइंट स्थिति को सहेजे बिना किया जाता है।
- Cachable : क्लाइंट के पास पहले से किए गए अनुरोधों की प्रतिक्रियाओं का एक कैश हो सकता है।
- स्तरित प्रणाली : क्लाइंट को यह नहीं पता होता है कि यह सीधे एंड-सर्वर से जुड़ा है या यदि संचार मध्यवर्ती के माध्यम से किया जाता है।
यूनिफ़ॉर्म इंटरफ़ेस
- संसाधन की पहचान : प्रत्येक संसाधन की पहचान एक यूआरआई द्वारा की जानी चाहिए।
- प्रोटोकॉल : संचार क्लाइंट और सर्वर में प्राप्त करने के लिए, एक प्रोटोकॉल पहले किया जाना है। प्रत्येक अनुरोध में सही MIME प्रकार (एप्लिकेशन / xml, पाठ / HTML, एप्लिकेशन / rdf + xml, आदि), सही शीर्ष लेख और सही HTTP विधि (नीचे CRUD विवरण देखें) हो सकता है।
CRUD
ठीक है, हमने देखा कि संसाधनों की पहचान करने के लिए हम यूआरआई का उपयोग कर सकते हैं, लेकिन हमें क्रियाओं के लिए कुछ और चाहिए (जोड़ें, संशोधित करें, हटाएं, आदि): सीआरयूडी (क्रिएट, रीड, अपडेट और डिलीट) का शानदार स्वागत।
- बनाएं { HTTP: पोस्ट } { एसक्यूएल: सम्मिलित करें } => एक नया संसाधन बनाने
- पढ़ें { HTTP: प्राप्त } { एसक्यूएल: चयन } => प्राप्त एक संसाधन
- अद्यतन { HTTP: PUT } { SQL: UPDATE } => एक संसाधन को संशोधित करें
- हटाएँ { : नष्ट करें HTTP {} एसक्यूएल: हटाने } => एक संसाधन हटाना
अब, PUT और DELETE के विषय में, कुछ तकनीकी समस्याएं दिखाई दे सकती हैं (आप उन्हें HTML फॉर्म के साथ प्राप्त कर सकते हैं): अक्सर डेवलपर्स प्रत्येक 'PUT' और 'DELETE' अनुरोध के लिए POST का उपयोग करके इस समस्या को दरकिनार कर देते हैं। आधिकारिक तौर पर, आपको PUT और DELETE का उपयोग करना होगा। वैसे, आप जो चाहते हैं वो करें। मेरा अनुभव मुझे हर बार POST और GET का उपयोग करने के लिए प्रेरित करता है।
--- अगले भाग का उपयोग किया जाना चाहिए लेकिन यह REST का बंधन नहीं है: यह लिंक्ड डेटा की चिंता करता है ---
यूआरआई
तकनीकी विवरण से सार URI! यूआरआई को अलविदा कहिए:
http://www.example.com/index.php?query=search&id=9823&date=08272012
यूआरआई फिर से डिजाइन! उपरोक्त लिंक लें और इसे निम्नानुसार बदलें:
http://www.example.com/search/2012/08/27/9823
यह बेहतर है, हुह? यह द्वारा किया जा सकता है:
एक और बात: विभिन्न संसाधनों का प्रतिनिधित्व करने के लिए अलग-अलग यूआरआई का उपयोग करें:
ध्यान दें : about.html और about.rdf फाइलें नहीं हैं! वे एक XSLT परिवर्तन का परिणाम हो सकता है!
सामग्री बातचीत
यदि आप इस बिंदु पर पहुंच गए हैं, तो बधाई! संभवतः, आप अधिक अमूर्त अवधारणाएँ प्राप्त करने के लिए तैयार हैं क्योंकि हम सेमेटिक वेब तकनीकी विवरणों में प्रवेश कर रहे हैं;) ठीक है, जब आपका ग्राहक एक संसाधन चाहता है, तो यह आम तौर पर निम्नलिखित अनुरोध करता है:
GET http://www.example.com/about
Accept: application/rdf+xml
लेकिन सर्वर इस बारे में कोई प्रतिक्रिया नहीं देगा। क्योंकि इसमें एक अलग URI ( http://www.example.com/about.rdf ) है। तो, चलिए 303 पैटर्न पर एक नजर डालते हैं ! सर्वर इसे लौटाएगा:
303 See Other
Location: http://www.example.com/about.rdf
और ग्राहक निम्नानुसार दिए गए लिंक का अनुसरण करेगा:
GET http://www.example.com/about.rdf
Accept: application/rdf+xml
अंत में, सर्वर अनुरोधित संसाधन लौटाएगा:
200 OK
about.rdf
चिंता न करें: आपका क्लाइंट एप्लिकेशन इसमें से कुछ भी नहीं करेगा! 303 पैटर्न सर्वर एप्लिकेशन द्वारा किया जाना चाहिए और आपका ब्राउज़र बाकी काम करेगा;)
निष्कर्ष
अक्सर सिद्धांत बहुत दूर है, अभ्यास से बहुत दूर है। हाँ, अब आप जानते हैं कि कैसे एक Restful एप्लिकेशन को डिज़ाइन और विकसित करना है लेकिन ऊपर दिए गए दिशानिर्देश केवल एक संकेत है। आपको वेब एप्लिकेशन बनाने का अपना सबसे अच्छा तरीका मिल जाएगा और शायद यह वैसा नहीं होगा जैसा कि सिद्धांत चाहता है। यह एक लानत मत करो: डी!
ग्रन्थसूची
रेस्टफुल वेब सर्विसेज, समीर त्यागी
बाकी एपीआई हाइपरटेक्स्ट-चालित, रॉय थॉमस फील्डिंग होना चाहिए
प्रतिष्ठित वेब सेवाएं: मूल बातें, एलेक्स रोड्रिगेज
वेबर रीस्ट वर्कफ़्लो