RESTful वेब सेवा ट्यूटोरियल: उदाहरण के साथ REST API क्या है
रेस्टफुल वेब सर्विसेज क्या है?
आरामदेह वेब सेवाएं यह एक हल्की, रखरखाव योग्य और स्केलेबल सेवा है जो REST आर्किटेक्चर पर बनाई गई है। रेस्टफुल वेब सर्विस, आपके एप्लिकेशन से API को सुरक्षित, एकसमान, स्टेटलेस तरीके से कॉलिंग क्लाइंट के सामने लाती है। कॉलिंग क्लाइंट रेस्टफुल सेवा का उपयोग करके पूर्वनिर्धारित संचालन कर सकता है। REST के लिए अंतर्निहित प्रोटोकॉल HTTP है। REST का मतलब है REpresentational State Transfer.
RESTful प्रमुख तत्व
REST वेब सेवाएँ अपनी शुरुआत से ही काफ़ी आगे बढ़ चुकी हैं। 2002 में, वेब कंसोर्टियम ने WSDL और SOAP वेब सेवाओं की परिभाषा जारी की थी। इसने वेब सेवाओं के क्रियान्वयन के लिए मानक तैयार किया।
2004 में, वेब कंसोर्टियम ने RESTful नामक एक अतिरिक्त मानक की परिभाषा भी जारी की। पिछले कुछ वर्षों में, यह मानक काफी लोकप्रिय हो गया है। और इसका उपयोग दुनिया भर की कई लोकप्रिय वेबसाइटों द्वारा किया जा रहा है, जिनमें फेसबुक और ट्विटर शामिल हैं।
REST उन संसाधनों तक पहुँचने का एक तरीका है जो किसी विशेष वातावरण में स्थित हैं। उदाहरण के लिए, आपके पास एक सर्वर हो सकता है जो महत्वपूर्ण दस्तावेज़ों या चित्रों या वीडियो को होस्ट कर सकता है। ये सभी संसाधनों के उदाहरण हैं। यदि किसी क्लाइंट, मान लें कि किसी वेब ब्राउज़र को इनमें से किसी भी संसाधन की आवश्यकता है, तो उसे इन संसाधनों तक पहुँचने के लिए सर्वर को एक अनुरोध भेजना होगा। अब REST सेवाएँ एक तरीका परिभाषित करती हैं कि इन संसाधनों तक कैसे पहुँचा जा सकता है।
RESTful कार्यान्वयन के प्रमुख तत्व इस प्रकार हैं:
- संसाधन - पहला मुख्य तत्व संसाधन ही है। मान लीजिए कि सर्वर पर एक वेब एप्लीकेशन में कई कर्मचारियों के रिकॉर्ड हैं। मान लीजिए कि वेब एप्लीकेशन का यूआरएल है http://demo.guru99.comअब REST सेवाओं के माध्यम से किसी कर्मचारी रिकॉर्ड संसाधन तक पहुंचने के लिए, कोई भी कमांड जारी कर सकता है http://demo.guru99.com/employee/1 - यह कमांड वेब सर्वर को बताता है कि कृपया उस कर्मचारी का विवरण प्रदान करें जिसका कर्मचारी नंबर 1 है।
- अनुरोध क्रियाएँ - ये बताते हैं कि आप संसाधन के साथ क्या करना चाहते हैं। ब्राउज़र डेटा प्राप्त करने के लिए एंडपॉइंट को निर्देश देने के लिए GET क्रिया जारी करता है। हालाँकि, POST, PUT और DELETE जैसी चीज़ों सहित कई अन्य क्रियाएँ उपलब्ध हैं। तो उदाहरण के मामले में http://demo.guru99.com/employee/1 वेब ब्राउज़र वास्तव में GET Verb जारी कर रहा है क्योंकि वह कर्मचारी रिकॉर्ड का विवरण प्राप्त करना चाहता है।
- अनुरोध हेड - ये अनुरोध के साथ भेजे गए अतिरिक्त निर्देश हैं। ये आवश्यक प्रतिक्रिया के प्रकार या प्राधिकरण विवरण को परिभाषित कर सकते हैं।
- अनुरोध निकाय - अनुरोध के साथ डेटा भेजा जाता है। डेटा आमतौर पर अनुरोध में भेजा जाता है जब REST वेब सेवाओं के लिए POST अनुरोध किया जाता है। POST कॉल में, क्लाइंट वास्तव में REST वेब सेवाओं को बताता है कि वह सर्वर में एक संसाधन जोड़ना चाहता है। इसलिए, अनुरोध निकाय में उस संसाधन का विवरण होगा जिसे सर्वर में जोड़ना आवश्यक है।
- प्रतिक्रिया निकाय - यह प्रतिक्रिया का मुख्य भाग है। इसलिए हमारे RESTful API उदाहरण में, यदि हम अनुरोध के माध्यम से वेब सर्वर से पूछताछ करना चाहते हैं http://demo.guru99.com/employee/1 , वेब सर्वर प्रतिक्रिया बॉडी में कर्मचारी के सभी विवरणों के साथ एक XML दस्तावेज़ लौटा सकता है।
- प्रतिक्रिया स्थिति कोड - ये कोड सामान्य कोड होते हैं जो वेब सर्वर से प्रतिक्रिया के साथ वापस किए जाते हैं। इसका एक उदाहरण कोड 200 है जो सामान्य रूप से तब लौटाया जाता है जब क्लाइंट को प्रतिक्रिया लौटाते समय कोई त्रुटि नहीं होती है।
आरामदेह तरीके
नीचे दिया गया चित्र लगभग सभी क्रियाओं (POST, GET, PUT, और DELETE) को दर्शाता है तथा उनके अर्थ को दर्शाने वाला REST API उदाहरण भी दिखाता है।
मान लीजिए कि हमारे पास एक RESTful वेब सेवा है जो स्थान पर परिभाषित है। http://demo.guru99.com/employee जब क्लाइंट इस वेब सेवा से कोई अनुरोध करता है, तो यह GET, POST, DELETE और PUT में से किसी भी सामान्य HTTP क्रिया को निर्दिष्ट कर सकता है। नीचे बताया गया है कि क्या होगा यदि संबंधित क्रियाएँ क्लाइंट द्वारा भेजी गईं।
- पोस्ट – इसका उपयोग RESTful वेब सेवा का उपयोग करके एक नया कर्मचारी बनाने के लिए किया जाएगा
- GET - इसका उपयोग RESTful वेब सेवा का उपयोग करने वाले सभी कर्मचारियों की सूची प्राप्त करने के लिए किया जाएगा
- डाल – इसका उपयोग RESTful वेब सेवा का उपयोग करने वाले सभी कर्मचारियों को अपडेट करने के लिए किया जाएगा
- हटाएँ – इसका उपयोग RESTful सेवाओं का उपयोग करने वाले सभी कर्मचारियों को हटाने के लिए किया जाएगा
आइए एक ही रिकॉर्ड के नजरिए से देखें। मान लीजिए कि एक कर्मचारी रिकॉर्ड था, जिसमें कर्मचारी संख्या 1 थी।
निम्नलिखित क्रियाओं के अपने-अपने अर्थ होंगे।
- पोस्ट - यह लागू नहीं होगा क्योंकि हम कर्मचारी 1 का डेटा प्राप्त कर रहे हैं जो पहले से ही बनाया गया है।
- GET - इसका उपयोग RESTful वेब सेवा का उपयोग करके कर्मचारी संख्या 1 वाले कर्मचारी का विवरण प्राप्त करने के लिए किया जाएगा
- डाल - इसका उपयोग RESTful वेब सेवा का उपयोग करके कर्मचारी संख्या 1 वाले कर्मचारी के विवरण को अपडेट करने के लिए किया जाएगा
- हटाएँ – इसका उपयोग कर्मचारी संख्या 1 वाले कर्मचारी का विवरण हटाने के लिए किया जाता है
क्यों आरामदेह
रेस्टफुल मुख्यतः निम्नलिखित कारणों से लोकप्रिय हुआ:
1. विषम भाषाएँ और वातावरण - यह मूलभूत कारणों में से एक है जो वैसा ही है जैसा हमने देखा है सोप किया जा सकता है।
- यह विभिन्न प्रोग्रामिंग भाषाओं पर निर्मित वेब अनुप्रयोगों को एक दूसरे के साथ संवाद करने में सक्षम बनाता है
- रेस्टफुल सेवाओं की सहायता से, ये वेब अनुप्रयोग विभिन्न वातावरणों पर रह सकते हैं, कुछ एक दूसरे पर भी हो सकते हैं। Windows, और अन्य लिनक्स पर हो सकते हैं।
लेकिन अंत में, चाहे वातावरण कैसा भी हो, अंतिम परिणाम हमेशा एक ही होना चाहिए कि वे एक दूसरे से बात करने में सक्षम होने चाहिए। रेस्टफुल वेब सेवाएँ विभिन्न प्रोग्रामिंग भाषाओं और प्लेटफ़ॉर्म पर निर्मित अनुप्रयोगों को एक दूसरे से बात करने के लिए यह लचीलापन प्रदान करती हैं।
नीचे दी गई तस्वीर एक वेब एप्लिकेशन का उदाहरण देती है जिसे फेसबुक, ट्विटर और गूगल जैसे अन्य एप्लिकेशन से बात करने की आवश्यकता होती है।
अब यदि किसी ग्राहक एप्लीकेशन को फेसबुक, ट्विटर आदि जैसी साइटों के साथ काम करना हो, तो उन्हें संभवतः यह जानना होगा कि फेसबुक, गूगल और ट्विटर किस भाषा पर आधारित हैं, तथा वे किस प्लेटफॉर्म पर बने हैं।
इसके आधार पर, हम अपने वेब एप्लिकेशन के लिए इंटरफेसिंग कोड लिख सकते हैं, लेकिन यह एक दुःस्वप्न साबित हो सकता है।
फेसबुक, ट्विटर और गूगल अपनी कार्यक्षमता को रेस्टफुल वेब सेवाओं के रूप में प्रदर्शित करते हैं। यह किसी भी क्लाइंट एप्लिकेशन को REST के माध्यम से इन वेब सेवाओं को कॉल करने की अनुमति देता है।
2. उपकरणों की घटना - आजकल हर चीज़ पर काम करने की ज़रूरत है मोबाइल चाहे वह मोबाइल डिवाइस हो, नोटबुक हो या फिर कार सिस्टम हो।
क्या आप कल्पना कर सकते हैं कि इन डिवाइस पर सामान्य वेब एप्लीकेशन के साथ बातचीत करने के लिए एप्लीकेशन को कोड करने में कितना प्रयास करना पड़ता है? फिर से रेस्टफुल एपीआई इस काम को आसान बना सकता है क्योंकि जैसा कि बिंदु संख्या 1 में बताया गया है, आपको वास्तव में यह जानने की आवश्यकता नहीं है कि डिवाइस के लिए अंतर्निहित परत क्या है।
3. अंत में क्लाउड की घटना है - सब कुछ क्लाउड पर जा रहा है। एप्लिकेशन धीरे-धीरे क्लाउड-आधारित सिस्टम जैसे कि Azure or Amazon. Azure और Amazon रेस्टफुल आर्किटेक्चर पर आधारित बहुत सारे API प्रदान करते हैं। इसलिए, अब एप्लिकेशन को इस तरह से विकसित करने की आवश्यकता है कि वे क्लाउड के साथ संगत हों। इसलिए चूंकि सभी क्लाउड-आधारित आर्किटेक्चर REST सिद्धांत पर काम करते हैं, इसलिए क्लाउड-आधारित सेवाओं का सर्वोत्तम उपयोग करने के लिए REST सेवा आधारित आर्किटेक्चर पर वेब सेवाओं को प्रोग्राम करना अधिक समझदारी भरा है।
शोकहारा Archiटेक्चर
RESTful या REST-शैली माने जाने वाले अनुप्रयोग या आर्किटेक्चर में निम्नलिखित विशेषताएं होती हैं
1. राज्य और कार्यक्षमता को वितरित संसाधनों में विभाजित किया गया है - इसका मतलब है कि हर संसाधन को GET, POST, PUT या DELETE के सामान्य HTTP कमांड के ज़रिए एक्सेस किया जाना चाहिए। इसलिए अगर कोई व्यक्ति सर्वर से फ़ाइल प्राप्त करना चाहता है, तो उसे GET अनुरोध जारी करके फ़ाइल प्राप्त करने में सक्षम होना चाहिए। अगर वे सर्वर पर फ़ाइल डालना चाहते हैं, तो उन्हें POST या PUT अनुरोध जारी करने में सक्षम होना चाहिए। और अंत में, अगर वे सर्वर से कोई फ़ाइल हटाना चाहते हैं, तो वे DELETE अनुरोध जारी कर सकते हैं।
2. आर्किटेक्चर क्लाइंट/सर्वर, स्टेटलेस, स्तरित है, और कैशिंग का समर्थन करता है
- क्लाइंट-सर्वर एक विशिष्ट आर्किटेक्चर है, जहां सर्वर, एप्लिकेशन को होस्ट करने वाला वेब सर्वर हो सकता है, तथा क्लाइंट, वेब ब्राउज़र जितना सरल हो सकता है।
- स्टेटलेस का मतलब है कि एप्लीकेशन की स्थिति REST में बनाए नहीं रखी जाती है। उदाहरण के लिए, यदि आप DELETE कमांड का उपयोग करके सर्वर से कोई संसाधन हटाते हैं, तो आप यह उम्मीद नहीं कर सकते कि हटाए गए जानकारी को अगले अनुरोध में भेजा जाएगा।
यह सुनिश्चित करने के लिए कि संसाधन हटा दिया गया है, आपको GET अनुरोध जारी करना होगा। GET अनुरोध का उपयोग पहले सर्वर पर सभी संसाधनों को प्राप्त करने के लिए किया जाएगा। जिसके बाद यह देखना होगा कि संसाधन वास्तव में हटा दिया गया था या नहीं।
RESTFul सिद्धांत और बाधाएं
REST आर्किटेक्चर कुछ विशेषताओं पर आधारित है, जिन्हें नीचे विस्तार से बताया गया है। किसी भी RESTful वेब सेवा को RESTful कहलाने के लिए नीचे दी गई विशेषताओं का पालन करना होगा। इन विशेषताओं को डिज़ाइन सिद्धांत भी कहा जाता है, जिनका पालन RESTful आधारित सेवाओं के साथ काम करते समय किया जाना चाहिए।
यह REST आधारित आर्किटेक्चर की सबसे बुनियादी आवश्यकता है। इसका मतलब है कि सर्वर में एक RESTful वेब सेवा होगी जो क्लाइंट को आवश्यक कार्यक्षमता प्रदान करेगी। क्लाइंट सर्वर पर वेब सेवा को एक अनुरोध भेजता है। सर्वर या तो अनुरोध को अस्वीकार कर देगा या उसका अनुपालन करेगा और क्लाइंट को पर्याप्त प्रतिक्रिया प्रदान करेगा।
- राज्यविहीन
स्टेटलेस की अवधारणा का अर्थ है कि यह सुनिश्चित करना क्लाइंट पर निर्भर है कि सर्वर को सभी आवश्यक जानकारी प्रदान की जाए। यह इसलिए आवश्यक है ताकि सर्वर प्रतिक्रिया को उचित तरीके से संसाधित कर सके। क्लाइंट से अनुरोधों के बीच सर्वर को किसी भी प्रकार की जानकारी नहीं रखनी चाहिए। यह एक बहुत ही सरल स्वतंत्र प्रश्न-उत्तर अनुक्रम है। क्लाइंट एक प्रश्न पूछता है, सर्वर उसका उचित तरीके से उत्तर देता है। क्लाइंट दूसरा प्रश्न पूछेगा। सर्वर को पिछला प्रश्न-उत्तर परिदृश्य याद नहीं रहेगा और उसे नए प्रश्न का उत्तर स्वतंत्र रूप से देना होगा।
- कैश
कैश अवधारणा स्टेटलेस की समस्या से निपटने में मदद करती है जिसका वर्णन पिछले बिंदु में किया गया था। चूँकि प्रत्येक सर्वर क्लाइंट अनुरोध प्रकृति में स्वतंत्र होता है, इसलिए कभी-कभी क्लाइंट सर्वर से उसी अनुरोध के लिए फिर से पूछ सकता है। ऐसा तब भी होता है जब उसने पहले भी इसके लिए अनुरोध किया हो। यह अनुरोध सर्वर पर जाएगा, और सर्वर प्रतिक्रिया देगा। इससे पूरे नेटवर्क में ट्रैफ़िक बढ़ जाता है। कैश एक ऐसी अवधारणा है जिसे क्लाइंट पर उन अनुरोधों को संग्रहीत करने के लिए लागू किया जाता है जो पहले से ही सर्वर पर भेजे जा चुके हैं। इसलिए यदि क्लाइंट द्वारा वही अनुरोध दिया जाता है, तो सर्वर पर जाने के बजाय, यह कैश में जाएगा और आवश्यक जानकारी प्राप्त करेगा। इससे क्लाइंट से सर्वर तक आने-जाने वाले नेटवर्क ट्रैफ़िक की मात्रा बच जाती है।
- स्तरित प्रणाली
स्तरित प्रणाली की अवधारणा यह है कि कोई भी अतिरिक्त परत जैसे कि मिडलवेयर परत को क्लाइंट और RESTFul वेब सेवा को होस्ट करने वाले वास्तविक सर्वर के बीच डाला जा सकता है (मिडलवेयर परत वह जगह है जहाँ सभी व्यावसायिक तर्क बनाए जाते हैं। यह एक अतिरिक्त सेवा हो सकती है जिसके साथ क्लाइंट वेब सेवा पर कॉल करने से पहले बातचीत कर सकता है।) लेकिन इस परत का परिचय पारदर्शी होना चाहिए ताकि यह क्लाइंट और सर्वर के बीच बातचीत को बाधित न करे।
- इंटरफ़ेस/समान अनुबंध
यह RESTful वेब सेवाओं को कैसे काम करना चाहिए, इसकी अंतर्निहित तकनीक है। RESTful मूल रूप से HTTP वेब लेयर पर काम करता है और सर्वर पर संसाधनों के साथ काम करने के लिए नीचे दी गई कुंजी क्रियाओं का उपयोग करता है
- POST – सर्वर पर संसाधन बनाने के लिए
- GET – सर्वर से संसाधन प्राप्त करने के लिए
- PUT – किसी संसाधन की स्थिति बदलने या उसे अद्यतन करने के लिए
- DELETE – सर्वर से किसी संसाधन को हटाने या मिटाने के लिए
ASP.NET में अपनी पहली Restful वेब सेवा बनाएं
अब इस REST API ट्यूटोरियल में, हम सीखेंगे कि ASP.NET में Restful वेब सेवा कैसे बनाई जाती है:
वेब सेवाएँ विभिन्न भाषाओं में बनाई जा सकती हैं। REST-आधारित सेवाएँ बनाने के लिए कई एकीकृत विकास वातावरणों का उपयोग किया जा सकता है।
इस RESTful API उदाहरण में, हम Visual Studio का उपयोग करके .Net में अपना REST एप्लिकेशन बनाने जा रहे हैं। हमारे उदाहरण में, Restful वेब सेवाओं के लिए हम निम्नलिखित REST सेवा उदाहरण का अनुकरण करने जा रहे हैं।
हम एक रेस्टफुल वेब सेवा बनाने जा रहे हैं जो नीचे दिए गए डेटा सेट पर काम करेगी।
नीचे दिया गया डेटा सेट एक REST API उदाहरण को दर्शाता है, जिसमें एक कंपनी ट्यूटोरियल को प्रदर्शित करती है, जो ट्यूटोरियल आईडी पर आधारित है।
ट्यूटोरियल | ट्यूटोरियलनाम |
---|---|
0 | Arrays |
1 | कतारों |
2 | ढेर |
हमारे REST API ट्यूटोरियल उदाहरण में, हम नीचे दिए गए Restful Verbs को लागू करने जा रहे हैं।
- ट्यूटोरियल प्राप्त करें - जब कोई ग्राहक इस रेस्टफुल एपीआई का आह्वान करता है, तो उन्हें वेब सेवा से उपलब्ध ट्यूटोरियल का पूरा सेट दिया जाएगा।
- ट्यूटोरियल/ट्यूटोरियलआईडी प्राप्त करें - जब कोई क्लाइंट इस रेस्टफुल एपीआई को आमंत्रित करता है, तो उन्हें क्लाइंट द्वारा भेजे गए ट्यूटोरियलआईडी के आधार पर ट्यूटोरियल नाम दिया जाएगा।
- पोस्ट ट्यूटोरियल/ट्यूटोरियलनाम - जब कोई क्लाइंट इस रेस्टफुल एपीआई को आमंत्रित करता है, तो क्लाइंट ट्यूटोरियलनाम डालने के लिए अनुरोध सबमिट करेगा। वेब सेवा तब सबमिट किए गए ट्यूटोरियल नाम को संग्रह में जोड़ देगी।
- ट्यूटोरियल/ट्यूटोरियलआईडी हटाएं- जब कोई क्लाइंट इस रेस्टफुल एपीआई को आमंत्रित करता है, तो क्लाइंट ट्यूटोरियलआईडी के आधार पर ट्यूटोरियलनाम को हटाने का अनुरोध सबमिट करेगा। वेब सेवा तब सबमिट किए गए ट्यूटोरियल नाम को संग्रह से हटा देगी।
आइए इस RESTful API ट्यूटोरियल में नीचे दिए गए चरणों का पालन करके अपनी पहली RESTful वेब सेवा बनाएं, जो उपरोक्त कार्यान्वयन को पूरा करती है।
अपनी पहली रेस्टफुल वेब सेवा कैसे बनाएं
चरण 1) नया प्रोजेक्ट बनाएं.
पहला कदम एक खाली जगह बनाना है एएसपी.नेट वेब अनुप्रयोग। Visual Studio 2013 से, मेनू विकल्प फ़ाइल->नया प्रोजेक्ट पर क्लिक करें।
एक बार जब आप न्यू प्रोजेक्ट विकल्प पर क्लिक करते हैं, तो विजुअल स्टूडियो आपको प्रोजेक्ट का प्रकार चुनने और प्रोजेक्ट के आवश्यक विवरण देने के लिए एक और डायलॉग बॉक्स देगा। इसे इस RESTful API ट्यूटोरियल के अगले चरण में समझाया गया है।
चरण 2) परियोजना का नाम और स्थान दर्ज करें.
- सबसे पहले RESTful वेब सेवाओं का चयन करना सुनिश्चित करें C# ASP.NET वेब एप्लिकेशन का वेब टेम्पलेट। वेब सेवा प्रोजेक्ट बनाने के लिए प्रोजेक्ट को इस प्रकार का होना चाहिए। इस विकल्प को चुनकर, Visual Studio किसी भी वेब-आधारित एप्लिकेशन द्वारा आवश्यक आवश्यक फ़ाइलों को जोड़ने के लिए आवश्यक कदम उठाएगा।
- अपने प्रोजेक्ट के लिए एक नाम दें जो हमारे मामले में “Webservice.REST” दिया गया है।
- फिर एक स्थान देना सुनिश्चित करें, जहां परियोजना फाइलें संग्रहीत की जाएंगी।
एक बार ऐसा हो जाने पर आपको Visual Studio 2013 में आपके समाधान एक्सप्लोरर में बनाई गई प्रोजेक्ट फ़ाइल दिखाई देगी।
चरण 3) वेब सेवा फ़ाइल बनाएँ.
अगला चरण वेब सेवा फ़ाइल बनाना है जिसमें RESTful वेब सेवा होगी
- सबसे पहले नीचे दिखाए अनुसार प्रोजेक्ट फ़ाइल पर राइट-क्लिक करें
- इस चरण में,
- प्रोजेक्ट फ़ाइल पर राइट-क्लिक करें
- “Add->new item” विकल्प चुनें।
दिखाई देने वाले डायलॉग बॉक्स में, आपको निम्नलिखित कार्य करने होंगे
- WCF Service (Ajax-enabled) का विकल्प चुनें – इस प्रकार की फ़ाइल चुनें, इससे Visual studio कुछ बुनियादी कोड जोड़ने के लिए जो किसी को RESTful वेब सेवा बनाने में मदद करता है। WCF का मतलब है Windows संचार FoundationWCF विभिन्न प्लेटफ़ॉर्म या एक ही प्लेटफ़ॉर्म के अनुप्रयोगों के लिए एक लाइब्रेरी है जो विभिन्न प्रोटोकॉल जैसे TCP, HTTP, HTTPS पर संचार करती है। Ajax मूल रूप से एसिंक्रोनस है Javaलिपि और XML. AJAX पर्दे के पीछे सर्वर के साथ छोटी मात्रा में डेटा का आदान-प्रदान करके वेब पेजों को अतुल्यकालिक रूप से अपडेट करने की अनुमति देता है।
- अब सेवा के लिए एक नाम दें जो हमारे मामले में TutorialService है।
- अंत में, सेवा को समाधान में जोड़ने के लिए जोड़ें बटन पर क्लिक करें।
चरण 4) एक विन्यास बनाएं.
अगला कदम वास्तव में कॉन्फ़िगरेशन में बदलाव करना है ताकि यह प्रोजेक्ट RESTful वेब सेवाओं के साथ काम पूरा कर सके। इसके लिए फ़ाइल में बदलाव करने की आवश्यकता है वेब.कॉन्फिगयह फ़ाइल वेबसर्विस प्रोजेक्ट फ़ाइल के समान विंडो में दिखाई देती है। फ़ाइल Web.config में वे सभी कॉन्फ़िगरेशन शामिल हैं जो वेब एप्लिकेशन को ठीक से काम करने में सक्षम बनाते हैं। किया जा रहा परिवर्तन वास्तव में एप्लिकेशन को शुद्ध RESTful वेब सेवा के रूप में डेटा भेजने और प्राप्त करने की अनुमति देता है।
- कोड खोलने के लिए Web.config फ़ाइल पर क्लिक करें
- रेखा का पता लगाएं
- लाइन को बदलें
चरण 5) कार्यान्वयन के लिए हमारा कोड जोड़ें.
इस RESTful API ट्यूटोरियल में अगला चरण कार्यान्वयन के लिए अपना कोड जोड़ना है। नीचे दिए गए सभी कोड को TutorialService.svc फ़ाइल में लिखा जाना चाहिए
- पहला काम हमारे डेटा को दर्शाने के लिए कोड जोड़ना है जिसका इस्तेमाल हमारे प्रोग्राम में किया जाएगा। इसलिए हमारे पास “Arrays”, “Queues” और “Stacks” के मानों के साथ स्ट्रिंग वैरिएबल की एक सूची होगी। यह हमारी होस्टिंग वेब सेवा के माध्यम से उपलब्ध ट्यूटोरियल के नाम को दर्शाएगा।
namespace Webservice.REST { [ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed public class TutorialService { private static List<String> lst = new List<String> (new String[] {"Arrays","Queues","Stacks"});
चरण 6) हमारी GET विधि के लिए कोड परिभाषित करें.
इसके बाद हम अपने GET मेथड के लिए कोड परिभाषित करेंगे। यह कोड भी उसी TutorialService.svc फ़ाइल में रहेगा। जब भी हम अपने ब्राउज़र से सर्विस को कॉल करेंगे, यह कोड चलेगा।
नीचे वर्णित परिदृश्य को पूरा करने के लिए नीचे दी गई विधि का उपयोग किया जाएगा
- यदि कोई उपयोगकर्ता सभी उपलब्ध ट्यूटोरियल्स की सूची चाहता है, तो इसे पूरा करने के लिए नीचे दिए गए कोड को लिखना होगा।
[WebGet(UriTemplate="/Tutorial")] public String GetAllTutorial() { int count = 1st.Count; String TutorialList = ""; for (int i = 0; i < count; i++) TutorialList = TutorialList + lst[i] + ","; return TutorialList; }
कोड स्पष्टीकरण:-
- कोड की पहली लाइन सबसे महत्वपूर्ण है। इसका उपयोग यह परिभाषित करने के लिए किया जाता है कि हम URL के माध्यम से इस विधि को कैसे कॉल कर सकते हैं। इसलिए यदि हमारी वेब सेवा का लिंक है http://localhost:52645/TutorialService.svc और यदि हम URL में '/Tutorial' जोड़ दें http://localhost:52645/TutorialService.svc/Tutorial , उपरोक्त कोड लागू किया जाएगा। 'WebGet' की विशेषता एक पैरामीटर है जो इस विधि को RESTful विधि होने की अनुमति देता है ताकि इसे GET क्रिया के माध्यम से लागू किया जा सके।
- कोड के इस भाग का उपयोग 'lst' वेरिएबल में स्ट्रिंग्स की हमारी सूची को देखने और उन सभी को कॉलिंग प्रोग्राम में वापस करने के लिए किया जाता है।
चरण 7) आउटपुट लौटाएँ.
नीचे दिया गया कोड यह सुनिश्चित करता है कि यदि ट्यूटोरियल आईडी के साथ ट्यूटोरियल सेवा पर GET कॉल किया जाता है, तो यह ट्यूटोरियल आईडी के आधार पर संबंधित ट्यूटोरियल नाम लौटाएगा।
[WebGet (UriTemplate = "/Tutorial/{Tutorialid}")] public String GetTutorialbyID(String Tutorialid) { int pid; Int32.TryParse(Tutorialid, out pid); return lst[pid]; }
कोड स्पष्टीकरण:-
- कोड की पहली लाइन सबसे महत्वपूर्ण है। इसका उपयोग यह परिभाषित करने के लिए किया जाता है कि हम URL के माध्यम से इस विधि को कैसे कॉल कर सकते हैं। इसलिए यदि हमारी वेब सेवा का लिंक है http://localhost:52645/TutorialService.svc और यदि हम URL में '/Tutorial/{Tutorialid}' जोड़ दें, तो हम वेब सेवा को इस प्रकार कॉल कर सकेंगे http://localhost:52645/TutorialService.svc/Tutorial/1 उदाहरण के लिए। वेब सेवा को तब ट्यूटोरियल नाम वापस करना होगा जिसमें ट्यूटोरियल आईडी # 1 हो।
- कोड के इस भाग का उपयोग "ट्यूटोरियल नाम" को वापस करने के लिए किया जाता है, जिसमें वेब विधि को पास की गई ट्यूटोरियल आईडी होती है।
- डिफ़ॉल्ट रूप से, यह याद रखना आवश्यक है कि ब्राउज़र में URL को जो कुछ भी भेजा जाता है वह एक स्ट्रिंग है।
- लेकिन आपको यह याद रखना होगा कि हमारी सूची का सूचकांक एक पूर्णांक होना चाहिए, इसलिए हम पहले ट्यूटोरियलआईडी को एक पूर्णांक में बदलने के लिए आवश्यक कोड जोड़ रहे हैं और फिर इसका उपयोग हमारी सूची में सूचकांक स्थिति तक पहुंचने के लिए करेंगे।
- फिर कॉलिंग प्रोग्राम को तदनुसार मान लौटाएं।
चरण 8) POST विधि के लिए कोड लिखें.
अगला चरण हमारे POST विधि के लिए कोड लिखना है। जब भी हम POST विधि के माध्यम से ट्यूटोरियल की अपनी सूची में कोई स्ट्रिंग मान जोड़ना चाहेंगे, तो यह विधि लागू होगी। उदाहरण के लिए, यदि आप “सॉफ़्टवेयर परीक्षण” का ट्यूटोरियल नाम जोड़ना चाहते हैं, तो आपको POST विधि का उपयोग करना होगा।
कोड स्पष्टीकरण:-
- पहली पंक्ति 'WebInvoke' विशेषता है जिसे हमारी विधि से जोड़ा गया है। यह विधि को POST कॉल के माध्यम से लागू करने की अनुमति देता है। RequestFormat और ResponseFormat विशेषता को JSON के रूप में उल्लेखित किया जाना चाहिए, क्योंकि RESTFul वेब सेवा में मान पोस्ट करते समय, मान इस प्रारूप में होने चाहिए।
- कोड की दूसरी पंक्ति का उपयोग POST कॉल के माध्यम से पास किए गए स्ट्रिंग मान को हमारे ट्यूटोरियल स्ट्रिंग्स की मौजूदा सूची में जोड़ने के लिए किया जाता है।
चरण 9) DELETE ऑपरेशन को संभालने के लिए विधि जोड़ें.
अंत में हम DELETE ऑपरेशन को संभालने के लिए अपना तरीका जोड़ने जा रहे हैं। जब भी हम DELETE विधि के माध्यम से ट्यूटोरियल की अपनी सूची से किसी मौजूदा स्ट्रिंग मान को हटाना चाहेंगे, तो यह तरीका लागू हो जाएगा।
[WebInvoke(Method = "DELETE", RequestFormat = WebMessageFormat.Json, UriTemplate = "/Tutorial/{Tutorialid}", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] public void DeleteTutorial(String Tutorialid) { int pid; Int32.TryParse(Tutorialid, out pid); 1st.RemoveAt(pid); }
कोड स्पष्टीकरण:-
- पहली पंक्ति 'WebInvoke' विशेषता है जिसे हमारी विधि से जोड़ा गया है। यह विधि को POST कॉल के माध्यम से लागू करने की अनुमति देता है। RequestFormat और ResponseFormat विशेषता को JSON के रूप में उल्लेखित किया जाना चाहिए, क्योंकि RESTFul वेब सेवा में मान पोस्ट करते समय, मान इस प्रारूप में होने चाहिए। ध्यान दें कि Method पैरामीटर को "DELETE" पर सेट किया जा रहा है। इसका मतलब है कि जब भी हम DELETE क्रिया जारी करते हैं, तो यह विधि लागू हो जाएगी।
- कोड की दूसरी पंक्ति का उपयोग DELETE कॉल के माध्यम से भेजे गए ट्यूटोरियल आईडी को लेने और बाद में उस आईडी को हमारी सूची से हटाने के लिए किया जाता है। Int32 कोड में फ़ंक्शन का उपयोग ट्यूटोरियल आईडी को स्ट्रिंग वेरिएबल से पूर्णांक में परिवर्तित करने के लिए किया जाता है)।
अपनी पहली Restful वेब सेवा चलाना
अब जबकि हमने उपरोक्त अनुभाग में अपनी पूरी वेब सेवा बना ली है, तो आइए देखें कि हम ट्यूटोरियल सेवा को कैसे चला सकते हैं ताकि इसे किसी भी क्लाइंट से मंगाया जा सके।
वेब सेवा चलाने के लिए कृपया नीचे दिए गए चरणों का पालन करें
चरण 1) प्रोजेक्ट फ़ाइल पर राइट क्लिक करें – Webservice.REST
चरण 2) मेनू विकल्प 'स्टार्टअप प्रोजेक्ट के रूप में सेट करें' चुनें। यह सुनिश्चित करेगा कि जब Visual Studio संपूर्ण समाधान चलाएगा तो यह प्रोजेक्ट चलाया जाएगा
चरण 3) अगला चरण प्रोजेक्ट को स्वयं चलाना है। अब सिस्टम पर स्थापित डिफ़ॉल्ट ब्राउज़र के आधार पर, विज़ुअल स्टूडियो में रन बटन के बगल में उपयुक्त ब्राउज़र नाम आएगा। हमारे मामले में, हमारे पास है Google Chrome बस इस बटन पर क्लिक करें.
आउटपुट: -
जब प्रोजेक्ट चलाया जाता है, तो आप अपने TutorialService.svc/Tutorial अनुभाग पर ब्राउज़ कर सकते हैं, और आपको नीचे दिया गया आउटपुट मिलेगा।
उपरोक्त आउटपुट में,
- आप देख सकते हैं कि ब्राउज़र 'GET' क्रिया को लागू कर रहा है और वेब सेवा में 'GetAllTutorial' विधि को निष्पादित कर रहा है। इस मॉड्यूल का उपयोग हमारी वेब सेवा द्वारा प्रदर्शित सभी ट्यूटोरियल को प्रदर्शित करने के लिए किया जाता है।
अपनी पहली Restful वेब सेवा का परीक्षण करना
उपरोक्त अनुभाग में, हम पहले ही देख चुके हैं कि 'GET' क्रिया को निष्पादित करने और 'GetAllTutorial' को लागू करने के लिए ब्राउज़र का उपयोग कैसे किया जाता है।
- आइए अब निम्नलिखित उपयोग परिदृश्य को निष्पादित करने के लिए ब्राउज़र का उपयोग करें।
ट्यूटोरियल/ट्यूटोरियलआईडी प्राप्त करें – जब कोई क्लाइंट इस रेस्टफुल एपीआई को आमंत्रित करता है, तो उन्हें क्लाइंट द्वारा भेजे गए ट्यूटोरियलआईडी के आधार पर ट्यूटोरियल का नाम दिया जाएगा
अपने ब्राउज़र में, URL में ट्यूटोरियल शब्द के बाद स्ट्रिंग /1 जोड़ें। यदि आप एंटर बटन दबाते हैं, तो आपको नीचे दिया गया आउटपुट मिलेगा
अब आप क्यूज़ का आउटपुट देखेंगे जो वास्तव में ट्यूटोरियल स्ट्रिंग्स की हमारी सूची में संख्या 1 के अनुरूप है। इसका मतलब है कि 'GetTutorialbyID' विधि अब हमारी वेबसर्विस से लागू की जा रही है। यह यह भी दर्शाता है कि 1 का मान ब्राउज़र के माध्यम से हमारी वेब सेवा और हमारी विधि में सफलतापूर्वक पारित किया जा रहा है और यही कारण है कि हमें ब्राउज़र में "क्यूज़" का सही संगत मान मिल रहा है।
- अब नीचे दिए गए परिदृश्य को निष्पादित करके अपनी वेब सेवा का उपभोग करते हैं। इसके लिए, आपको "नामक टूल इंस्टॉल करना होगाFiddler” जो कि साइट से निःशुल्क डाउनलोड करने योग्य टूल है।
पोस्ट ट्यूटोरियल/ट्यूटोरियलनाम – जब कोई क्लाइंट इस रेस्टफुल एपीआई को आमंत्रित करता है, तो क्लाइंट ट्यूटोरियलनाम डालने के लिए अनुरोध सबमिट करेगा। वेब सेवा तब सबमिट किए गए ट्यूटोरियल नाम को संग्रह में जोड़ देगी।
फिल्डलर टूल चलाएं और नीचे दिए गए चरणों का पालन करें;
- कंपोजर सेक्शन पर जाएँ। इसका उपयोग अनुरोध बनाने के लिए किया जाता है जिसे किसी भी वेब एप्लिकेशन पर सबमिट किया जा सकता है।
- सुनिश्चित करें कि अनुरोध प्रकार "POST" है और सही URL हिट किया जा रहा है, जो हमारे मामले में होना चाहिए http://localhost:52645/TutorialService.svc/Tutorial
- सुनिश्चित करें कि Content-Type को application/json के रूप में चिह्नित किया गया है। याद रखें कि हमारी वेब सेवा में हमारा POST अनुरोध विधि केवल json शैली डेटा स्वीकार करता है, इसलिए हमें यह सुनिश्चित करने की आवश्यकता है कि जब हम अपने एप्लिकेशन को अनुरोध भेज रहे हों तो यह निर्दिष्ट हो।
- अंत में, हमें अपना डेटा दर्ज करना होगा। याद रखें कि POST के लिए हमारी विधि 'str' नामक एक पैरामीटर स्वीकार करती है। इसलिए यहाँ हम निर्दिष्ट कर रहे हैं कि हम अपने ट्यूटोरियल नामों के संग्रह में “ट्रीज़” नामक एक मान जोड़ना चाहते हैं और सुनिश्चित करें कि यह str वैरिएबल नाम से टैग किया गया है।
अंत में, बस फ़िडलर में निष्पादित करें बटन पर क्लिक करें। यह वेब सेवा को डेटा “ट्रीज़” को हमारी वेब सेवा पर पोस्ट करने के लिए एक अनुरोध भेजेगा।
अब, जब हम अपनी ट्यूटोरियल सूची में सभी स्ट्रिंग्स दिखाने के लिए ट्यूटोरियल URL पर ब्राउज़ करते हैं, तो आप देखेंगे कि अब “ट्रीज़” का मान भी मौजूद है। यह दर्शाता है कि वेब सेवा के लिए POST अनुरोध सफलतापूर्वक निष्पादित किया गया था और इसे हमारी ट्यूटोरियल सूची में सफलतापूर्वक जोड़ा गया था।
- अब हम नीचे दिए गए परिदृश्य को निष्पादित करके अपनी वेब सेवा का उपयोग करते हैं। इसके लिए भी हमें फ़िडलर टूल का उपयोग करना होगा
ट्यूटोरियल/ट्यूटोरियलआईडी हटाएं- जब कोई क्लाइंट इस रेस्टफुल एपीआई को आमंत्रित करता है, तो क्लाइंट ट्यूटोरियलआईडी के आधार पर ट्यूटोरियलनाम को हटाने का अनुरोध सबमिट करेगा। वेब सेवा तब सबमिट किए गए ट्यूटोरियल नाम को संग्रह से हटा देगी।
फिल्डलर टूल चलाएँ और नीचे दिए गए चरणों का पालन करें
- कंपोजर सेक्शन पर जाएँ। इसका उपयोग अनुरोध बनाने के लिए किया जाता है जिसे किसी भी वेब एप्लिकेशन पर सबमिट किया जा सकता है।
- सुनिश्चित करें कि अनुरोध प्रकार "DELETE" है और सही URL हिट किया जा रहा है, जो हमारे मामले में होना चाहिए http://localhost:52645/TutorialService.svc/Tutorialसुनिश्चित करें कि सूची में स्ट्रिंग को हटाने के लिए जिस आईडी का उपयोग किया जाता है, वह URL के माध्यम से पैरामीटर के रूप में भेजी जाती है। हमारे REST उदाहरण में, हम 1 भेज रहे हैं, इसलिए यह 2 को हटा देगा।nd हमारे संग्रह में एक तत्व है जो "कतारें" है।
अंत में, बस फ़िडलर में निष्पादित करें बटन पर क्लिक करें। यह हमारी वेब सेवा के लिए डेटा "कतार" को हटाने के लिए वेब सेवा को एक अनुरोध भेजेगा।
अब, जब हम अपनी ट्यूटोरियल सूची में सभी स्ट्रिंग्स दिखाने के लिए ट्यूटोरियल URL पर ब्राउज़ करते हैं, तो आप देखेंगे कि "क्यू" का मान अब मौजूद नहीं है।
इससे पता चलता है कि वेब सेवा के लिए DELETE अनुरोध सफलतापूर्वक निष्पादित किया गया था। ट्यूटोरियल स्ट्रिंग्स की हमारी सूची में इंडेक्स नंबर 1 पर मौजूद तत्व को सफलतापूर्वक हटा दिया गया था।
सारांश
- REST का मतलब है REpresentational State Transfer. REST का उपयोग ऐसी वेब सेवाओं के निर्माण के लिए किया जाता है जो हल्की, रखरखाव योग्य और प्रकृति में स्केलेबल होती हैं।
- अधिक से अधिक एप्लिकेशन रेस्टफुल आर्किटेक्चर की ओर बढ़ रहे हैं। ऐसा इसलिए है क्योंकि अब बहुत से लोग मोबाइल डिवाइस का उपयोग कर रहे हैं और कई तरह के एप्लिकेशन क्लाउड पर जा रहे हैं।
- REST के मुख्य पहलू वे संसाधन हैं जो सर्वर पर रहते हैं और GET, POST, PUT और DELETE क्रियाएं हैं, जिनका उपयोग इन संसाधनों के साथ काम करने के लिए किया जा सकता है।
- रेस्टफुल वेब सेवाएं बनाने के लिए विजुअल स्टूडियो और .नेट का उपयोग किया जा सकता है।
- . परीक्षण POST और PUT के लिए वेब सेवाओं का उपयोग करने के लिए, आपको फिडलर नामक एक अन्य टूल का उपयोग करना होगा, जिसका उपयोग सर्वर पर POST और PUT अनुरोध भेजने के लिए किया जा सकता है।