बिल्ड वेब सर्विसेज रेस्ट वे

रोजर एल. कॉस्टेलो

मैं सबसे पहले REST के लिए एक संक्षिप्त परिचय प्रदान करेगा और फिर बताएगा कि कैसे REST शैली में वेब सेवाओं का निर्माण किया जाए।

REST क्या है?

REST एक शब्द है जिसे रॉय फील्डिंग ने पीएचडी में अपनाया है, नेटवर्क सिस्टम की वास्तुकला शैली का वर्णन करने के लिए निबंध [1]। REST प्रतिनिधि राज्य हस्तांतरण के लिए एक संक्षिप्त परिस्थिति है।

इसे Representational State Transfer क्यों कहा जाता है?

वेब संसाधनों के शामिल है एक संसाधन ब्याज की कोई भी वस्तु है। उदाहरण के लिए, बोइंग विमान कॉर्प एक ७४७ संसाधन को परिभाषित कर सकता है ग्राहक उस यूआरएल के साथ उस संसाधन तक पहुंच सकते हैं:

http://www.boeing.com/aircraft/747

संसाधन का प्रतिनिधित्व वापस किया जाता है (उदा। बोइंग 747.html) प्रतिनिधित्व एक राज्य में क्लाइंट अनुप्रयोग को स्थान देता है। Boeing747.html में एक हाइपरलिंक से गुजरने वाले क्लाइंट का नतीजा एक और स्रोत तक पहुंचा है। नया प्रतिनिधित्व ग्राहक अनुप्रयोग को एक और राज्य में रखता है। इस प्रकार, ग्राहक के आवेदन में परिवर्तन (स्थानान्तरण) राज्य प्रत्येक संसाधन प्रतिनिधित्व -> प्रतिनिधि राज्य हस्तांतरण के साथ!

प्रतिनिधि राज्य हस्तांतरण के अर्थ के रॉय फील्डिंग की व्याख्या यहां दी गई है:

“प्रतिनिधि राज्य हस्तांतरण का उद्देश्य एक अच्छी तरह से तैयार वेब एप्लिकेशन के व्यवहार की छवि तैयार करना है: वेब पेज (एक वर्चुअल स्टेट-मशीन) का एक नेटवर्क, जहां उपयोगकर्ता एक आवेदन के माध्यम से लिंक (राज्य संक्रमण) का चयन करके प्रगति करता है, जिसके परिणामस्वरूप अगले पृष्ठ (आवेदन की अगली स्थिति का प्रतिनिधित्व) उपयोगकर्ता को स्थानांतरित किया जा रहा है और उनके उपयोग के लिए प्रदान किया जाता है। ”

REST के लिए प्रेरणा

REST के लिए प्रेरणा वेब की विशेषताओं को कैप्चर करना था, जिसने वेब को सफल बना दिया। इसके बाद इन विशेषताओं का इस्तेमाल वेब के विकास को निर्देशित करने के लिए किया जा रहा है।

REST – एक वास्तुकला शैली, एक मानक नहीं

REST एक मानक नहीं है। आप W3C को एक REST विनिर्देशन डाल नहीं देखेंगे। आपको आईबीएम या माइक्रोसॉफ्ट या सन ने आरईएस डेवलपर की टूलकिट की बिक्री नहीं दिखाई होगी। क्यूं? क्योंकि REST सिर्फ एक स्थापत्य शैली है आप उस शैली को बोतल नहीं कर सकते आप केवल इसे समझ सकते हैं, और उस शैली में अपनी वेब सेवाओं को डिज़ाइन कर सकते हैं। (क्लाइंट-सर्वर वास्तुकला शैली के अनुरूप। कोई क्लाइंट-सर्वर मानक नहीं है।)

जबकि REST एक मानक नहीं है, यह मानकों का उपयोग करता है:

  • HTTP
  • URL
  • XML/HTML/GIF/JPEG/etc (Resource Representations)
  • text/xml, text/html, image/gif, image/jpeg, etc (MIME Types)

क्लासिक REST सिस्टम

वेब एक REST प्रणाली है! उन कई वेब सेवाओं का उपयोग करें जो आप इन वर्षों से उपयोग कर रहे हैं – पुस्तक-क्रम सेवाएं, खोज सेवाएं, ऑनलाइन शब्दकोश सेवाओं आदि – हैं REST- आधारित वेब सेवाएं अफसोस, आप REST का उपयोग कर रहे हैं। REST सेवाओं का निर्माण कर रहे हैं और आपको यह भी पता नहीं था।

REST वेब के “बड़ी तस्वीर” से संबंधित है। यह कार्यान्वयन विवरण (उदाहरण के लिए, वेब सेवा को कार्यान्वित करने के लिए जावा सर्विसलेट या सीजीआई का उपयोग करना) से निपटारा नहीं करता है। तो आइए, एक “बड़ी तस्वीर” परिप्रेक्ष्य से वेब सेवा बनाने का एक उदाहरण देखें।

पार्ट्स डिपो वेब सर्विसेज

पार्ट्स डिपो, इंक। (फर्जी कंपनी) ने अपने ग्राहकों को इसके लिए सक्षम करने के लिए कुछ वेब सेवाएं तैनात की हैं:

  • भागों की एक सूची प्राप्त करें
  • एक विशेष भाग के बारे में विस्तृत जानकारी प्राप्त करें
  • एक खरीद आदेश सबमिट करें (पीओ)

मान लीजिए कि कैसे इन सभी सेवाओं को REST फैशन में लागू किया जाता है।

भाग सूची प्राप्त करें

वेब सेवा भागों सूची संसाधन के लिए यूआरएल को उपलब्ध कराता है। उदाहरण के लिए, एक क्लाइंट पार्ट्स की सूची प्राप्त करने के लिए इस URL का उपयोग करेगा:

ध्यान दें कि “कैसे” वेब सर्विस पार्ट्स की सूची जनरेट करता है ग्राहक के लिए पूरी तरह पारदर्शी है सभी ग्राहक जानता है कि यदि वह उपरोक्त यूआरएल प्रस्तुत करता है तो एक दस्तावेज जिसमें भागों की सूची होती है, वह वापस आती है चूंकि कार्यान्वयन ग्राहकों के लिए पारदर्शी है, इसलिए क्लाइंट्स को प्रभावित किए बिना, पार्ट्स डिपो इस संसाधन के अंतर्निहित कार्यान्वयन को संशोधित करने के लिए स्वतंत्र है। यह ढीली युग्मन है।

यह वह दस्तावेज है जिसे ग्राहक प्राप्त करता है:

<?xml version=”1.0″?><p:Parts xmlns:p=”http://www.parts-depot.com&#8221;          xmlns:xlink=”http://www.w3.org/1999/xlink”>          <Part id=”00345″ xlink:href=”http://www.parts-depot.com/parts/00345″/>  <Part id=”00346″ xlink:href=”http://www.parts-depot.com/parts/00346″/>   <Part id=”00347″ xlink:href=”http://www.parts-depot.com/parts/00347″/>   <Part id=”00348″ xlink:href=”http://www.parts-depot.com/parts/00348″/></p:Parts&gt;

[मान लें कि सामग्री बातचीत के माध्यम से सेवा निर्धारित करती है कि क्लाइंट एक्सएमएल (मशीन-टू-मशीन प्रसंस्करण के लिए) के रूप में प्रतिनिधित्व करना चाहता है।] नोट करें कि भागों की सूची में प्रत्येक भाग के बारे में विस्तृत जानकारी प्राप्त करने के लिए लिंक हैं। यह बाकी की एक प्रमुख विशेषता है। ग्राहक एक राज्य से दूसरे स्थान पर स्थानांतरित करता है और प्रतिक्रिया दस्तावेज़ में वैकल्पिक यूआरएल के बीच से चयन करता है।

विस्तृत भाग डेटा प्राप्त करें

वेब सेवा प्रत्येक भाग संसाधन के लिए यूआरएल उपलब्ध कराता है। उदाहरण, यहाँ एक क्लाइंट कैसे ००३४५ का अनुरोध करता है:

http://www.parts-depot.com/parts/00345

यह वह दस्तावेज है जिसे ग्राहक प्राप्त करता है:

<?xml version=”1.0″?><p:Part xmlns:p=”http://www.parts-depot.com”           xmlns:xlink=”http://www.w3.org/1999/xlink”>      <Part-ID>00345</Part-ID>      <Name>Widget-A</Name>      <Description>This part is used within the frap assembly</Description>      <Specification xlink:href=”http://www.parts-depot.com/parts/00345/specification”/>      <UnitCost currency=”USD”>0.10</UnitCost>      <Quantity>10</Quantity></p:Part>

फिर देखें कि यह डेटा अब और अधिक डेटा से कैसे जुड़ा हुआ है – इस भाग के लिए विनिर्देश हाइपरलिंक से गुजरने के द्वारा मिल सकता है। प्रत्येक प्रतिक्रिया दस्तावेज़ ग्राहक को और अधिक विस्तृत जानकारी प्राप्त करने के लिए नीचे ड्रिल करने की अनुमति देता है।

पीओ भेजें

वेब सेवा एक यूपी जमा करने के लिए URL प्रदान करती है। क्लाइंट पीओ इंस्टेंस डॉक्युमेंट बनाता है जो पार्ट्स डेपो (डब्लूएसडीएल दस्तावेज में प्रकाशित किया गया है) द्वारा पीओ स्कीमा के अनुरूप है। क्लाइंट PO.xml को एक HTTP POST के पेलोड के रूप में सबमिट करता है।

PO सेवा HTTP POST को प्रस्तुत किए गए PO पर URL के साथ उत्तर देती है। इस प्रकार, ग्राहक उसके बाद किसी भी समय पीओ को पुनः प्राप्त कर सकता है (इसे अपडेट / अपडेट कर सकता है)। पीओ सूचना का एक हिस्सा बन गया है जिसे क्लाइंट और सर्वर के बीच साझा किया गया है। साझा जानकारी (पीओ) को सर्वर द्वारा एक पता (यूआरएल) दिया गया है और एक वेब सेवा के रूप में उजागर किया गया है।

भौतिक URL के विरुद्ध तार्किक URL

एक संसाधन एक वैचारिक संस्था है एक प्रतिनिधित्व संसाधन का एक ठोस अभिव्यक्ति है। यह यूआरएल:

http://www.parts-depot.com/parts/00345

एक तार्किक यूआरएल है, भौतिक यूआरएल नहीं है इस प्रकार, वहाँ होने की आवश्यकता नहीं है, उदाहरण के लिए, प्रत्येक भाग के लिए एक स्थिर HTML पृष्ठ। वास्तव में, यदि एक मिलियन भागों होते हैं तो एक लाख स्थैतिक HTML पृष्ठ बहुत ही आकर्षक डिजाइन नहीं होंगे।

[कार्यान्वयन विवरण: पार्ट्स डिपो उस सेवा को लागू कर सकता है जो एक जावा सबलेट को रोजगार के द्वारा एक विशिष्ट भाग के बारे में विस्तृत डेटा प्राप्त करता है जो मेजबान नाम के बाद स्ट्रिंग पार्स करता है, पार्टस डेटाबेस का क्वेरी करने के लिए पार्ट नंबर का उपयोग करता है, क्वेरी परिणाम को XML के रूप में तैयार करता है, और फिर XML को HTTP प्रतिक्रिया के पेलोड के रूप में लौटाएं।]

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

REST वेब सेवाओं के लक्षण

यहां पर REST की विशेषताएं हैं:

  • क्लाइंट-सर्वर: एक पुल-आधारित इंटरैक्शन शैली: उपभोक्ता घटकों को पुल अभ्यावेदन।
  • स्टेटलेस: क्लाइंट से सर्वर पर प्रत्येक अनुरोध में अनुरोध को समझने के लिए आवश्यक सभी जानकारी होनी चाहिए, और सर्वर पर किसी भी संग्रहीत संदर्भ का लाभ नहीं ले सकते।
  • कैश: नेटवर्क दक्षता प्रतिक्रियाओं को सुधारने के लिए कैश करने योग्य या गैर-कैशेबल के रूप में लेबल होने में सक्षम होना चाहिए।
  • यूनिफ़ॉर्म इंटरफ़ेस: सभी संसाधनों को एक जेनेरिक इंटरफ़ेस (जैसे, HTTP GET, POST, PUT, DELETE) के साथ एक्सेस किया जाता है।
  • नामित संसाधन – सिस्टम में संसाधनों का समावेश होता है जिसे यूआरएल का उपयोग कर नाम दिया जाता है।
  • इंटरकनेक्टेड संसाधन प्रतिनिधित्व – संसाधनों के प्रस्तुतीकरण यूआरएल का उपयोग करते हुए जुड़े हुए हैं, जिससे एक ग्राहक को एक राज्य से दूसरे में प्रगति के लिए सक्षम किया जा सकता है।
  • स्तरित घटकों – प्रॉक्सी सर्वर, कैश सर्वर, गेटवे, आदि जैसे बिचौलियों, प्रदर्शन, सुरक्षा, आदि का समर्थन करने के लिए ग्राहकों और संसाधनों के बीच डाला जा सकता है।

 

REST वेब सेवा डिजाइन के सिद्धांत

१. REST नेटवर्क (यानी वेब) में वेब सेवाओं का निर्माण करने की कुंजी उन सभी वैचारिक संस्थाओं की पहचान करना है जो आप सेवाओं के रूप में प्रकट करना चाहते हैं। ऊपर हमने संसाधनों के कुछ उदाहरण देखा: भागों सूची, विस्तृत भाग डेटा, खरीद आदेश

२. प्रत्येक संसाधन के लिए एक यूआरएल बनाएँ। संसाधनों को संज्ञाएं होना चाहिए, क्रियाएँ नहीं। उदाहरण के लिए, इसका उपयोग न करें:

http://www.parts-depot.com/parts/getPart?id=00345

ध्यान दें क्रिया, GetPart इसके बजाय, एक संज्ञा का उपयोग करें:

http://www.parts-depot.com/parts/00345

३. अपने संसाधनों को वर्गीकृत करें कि क्या ग्राहक संसाधनों का प्रतिनिधित्व प्राप्त कर सकते हैं, या क्या ग्राहकों को संसाधन (संशोधित) संसाधन संशोधित कर सकते हैं या नहीं। पूर्व के लिए, उन संसाधनों को एक HTTP GET का उपयोग करके पहुंचें। बाद में, उन संसाधनों को HTTP POST, PUT, और / या DELETE का उपयोग करके पहुंचें।

४. HTTP GET के द्वारा सुलभ सभी संसाधनों को साइड-इफेक्ट मुक्त होना चाहिए। यही है, संसाधन केवल संसाधन का प्रतिनिधित्व वापस करना चाहिए। संसाधन को शामिल करने से संसाधन को संशोधित नहीं किया जाना चाहिए।

५. कोई पुरुष / महिला एक द्वीप नहीं है। इसी तरह, कोई प्रतिनिधित्व एक द्वीप होना चाहिए। दूसरे शब्दों में, अधिक जानकारी के लिए, और / या संबंधित जानकारी प्राप्त करने के लिए ग्राहकों को ड्रिल करने के लिए सक्षम करने के लिए संसाधन प्रतिनिधित्व के भीतर हाइपरलिंक्स डालते हैं।

६. डेटा को धीरे-धीरे प्रकट करने के लिए डिज़ाइन एक एकल प्रतिक्रिया दस्तावेज़ में सब कुछ प्रकट न करें अधिक विवरण प्राप्त करने के लिए हाइपरलिंक प्रदान करें।

७. एक स्कीमा (DTD, W3C स्कीमा, RelaxNG, या Schematron) का उपयोग कर प्रतिक्रिया डेटा का प्रारूप निर्दिष्ट करें। उन सेवाओं के लिए जिन्हें पोस्ट या इसके लिए आवश्यकता होती है, प्रतिक्रिया का प्रारूप निर्दिष्ट करने के लिए स्कीमा भी प्रदान करते हैं।

८. वर्णन करें कि आपकी सेवाओं को डब्लूएसडीएल दस्तावेज़ या किसी एचटीएमएल दस्तावेज के जरिये उपयोग में लाया जाना है।

सारांश

इस लेख ने आरईएसटी को एक स्थापत्य शैली के रूप में वर्णित किया है। वास्तव में, यह वेब की स्थापत्य शैली है REST का वर्णन करता है कि वेब को अच्छी तरह से कैसे काम करता है बाकी के सिद्धांतों का पालन करना आपकी सेवाओं को वेब के संदर्भ में अच्छी तरह से काम करेगा।

अभिस्वीकृति

इस दस्तावेज़ को बनाने में रॉबर्ट बामविच और फिलिप एस्केलीन के लिए बहुत उपयोगी टिप्पणी के लिए धन्यवाद।

Source: http://www.xfront.com/REST-Web-Services.html

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s