2011-12-13 13 views
8

क्या हैं, मैंने विकिपीडिया आदि के रीस्टफुल वेबसाइसेस के बारे में पढ़ने की कोशिश की है, लेकिन मुझे यह स्वीकार करना होगा कि मुझे यह नहीं मिला है। एक ऐसी फिल्म है जिसमें डेन्ज़ेल वाशिंगटन कहते हैं, "मुझे यह बताएं कि मैं 5 साल का हूं"। क्या कोई मेरे लिए रीस्टफुल सेवाओं के बारे में ऐसा कर सकता है?रीस्टफुल वेब सर्विसेज

यदि आप फिल्म का नाम जानते हैं तो बोनस अंक।

+1

[मैं सिर्फ यह आज पहले अद्यतन] (http://stackoverflow.com/questions/4573305/rest-api-why-use-put है ग्रहण करने के लिए जा रहा हूँ -delete-बाद मिल/4573426 # 4573426)। – zzzzBov

+1

इसके अलावा, [फिलाडेल्फिया] (http://en.wikiquote.org/wiki/Philadelphia_ (फिल्म)), लेकिन ऐसा लगता है कि आप गलत हैं। – zzzzBov

+0

उस पोस्ट में चार साल की उम्र नहीं है। संक्षेप में यह क्या है और यह एसओएपी से अलग कैसे है? एक साधारण उदाहरण बहुत अच्छा होगा। –

उत्तर

20

जब मैंने पहली बार आरईएसटी के साथ शुरुआत की, तो मुझे वहां भी सभी दस्तावेज के बावजूद "बड़ी तस्वीर" प्राप्त करने में कुछ कठिनाई हुई। वैसे भी, यहाँ मेरी संक्षिप्त बाकी पर ले रहा है:

  • बाकी वेब सेवाओं के निर्माण के लिए एक स्थापत्य शैली है।

  • REST HTTP के शीर्ष पर बनाया गया है। आपकी वेब सेवा यूआरआई के रूप में संसाधनों का खुलासा करती है। आपकी सेवा मानक HTTP क्रियाओं का उपयोग कर ग्राहकों को आपकी सेवा पर कार्य करने की अनुमति देती है (GET = संसाधन पढ़ें, POST = संसाधन बनाएं, PUT = संसाधन अपडेट करें, DELETE = संसाधन हटाएं)।

  • आरईएसटी ने पिछले कुछ सालों में महत्वपूर्ण गति प्राप्त की है क्योंकि ए (एस) एसओएपी जैसी अन्य शैलियों पर इसकी सादगी है। (बी) HTTP की सर्वव्यापीता। चूंकि HTTP एक समय-परीक्षण मानक है, इसलिए अधिकांश भाषाओं में बिल्ड-इन या तृतीय-पक्ष HTTP समर्थन होता है। आप SOAP के बारे में एक ही बात नहीं कह सकते हैं।

  • क्योंकि आरईएसटी एक शैली है और सख्त प्रोटोकॉल/विनिर्देश नहीं है, वहां व्याख्या के लिए बहुत सारे कमरे हैं। कई सार्वजनिक सेवाएं जो खुद को "आरईएसटी" कहते हैं, वे पत्र के लिए शैली का पालन नहीं करते हैं।

+2

यह उत्तर आरईएसटी वास्तुकला का एक बेहद महत्वपूर्ण हिस्सा याद करता है, जिसे [हेटोआस] (http://en.wikipedia.org/wiki/HATEOAS) कहा जाता है। यह [ढीला युग्मन] प्रदान करता है (http://en.wikipedia.org/wiki/Loose_coupling), और सर्वर को स्वतंत्र रूप से ग्राहकों के "विकसित"/बदलने की अनुमति देता है। इस तरह, आप एसओएपी सेवाओं के बारे में कुछ भी कह सकते हैं, और इसका हिस्सा यह है कि वेब स्वयं सफल क्यों हुआ। वास्तव में, आरईएसटी वेब के सामान्यीकृत आर्किटेक्चर को औपचारिक बनाने का प्रयास कर रहा है जिसे हम पहले ही इस्तेमाल कर रहे हैं, और हाइपरटेक्स्ट/हाइपरलिंकिंग तर्कसंगत रूप से वेब का सबसे महत्वपूर्ण हिस्सा है, और इस प्रकार REST। –

4

RESTful services सेवाओं है कि राज्य represntationally हस्तांतरण, इसलिए नाम रिप्रेसेंटेशनल स्टेट ट्रान्सफर कर रहे हैं। यह वास्तव में का अर्थ है कि डेटा घोषणात्मक तरीके से पारित किया गया है, जो कहने के लिए, आप जो भी मांगते हैं उसे प्राप्त करते हैं।

आरईएसटी एसओएपी से अलग है जिसमें यह प्रोटोकॉल नहीं है, और कोई औपचारिक विनिर्देश नहीं है। कार्यक्षमता को दूरस्थ रूप से एक्सेस करने के लिए एक सामान्य इंटरफ़ेस का उपयोग करके अनुप्रयोगों के बीच डेटा स्थानांतरण को सरल बनाने के लिए SOAP बनाया गया था। दुर्भाग्यवश, आम तौर पर काम करने के लिए, एसओएपी काफी जटिल है, और एसओएपी अनुरोध करना बहुत सीधी नहीं है, एक्सएमएल पार्सिंग और पीढ़ी की आवश्यकता है।

इसके बजाय, आरईएसटी भारी उठाने के लिए हाइपर टेक्स्ट ट्रांसफर प्रोटोकॉल (HTTP) पर निर्भर करता है। वेबसर्वर और सर्वर स्क्रिप्ट पहले ही HTTP के भीतर काम करने के आसपास बनाई गई हैं। आरईएसटी का उपयोग करने का अनुरोध करने के लिए एक यूआरएल अनुरोध के रूप में सरल है, जैसे वेबपेज पर जाकर। किसी भी त्रुटि को सिग्नल करने के लिए एक विश्वसनीय सेवा के लिए API HTTP's methods और status codes का पुन: उपयोग कर सकता है। फैंसी प्रश्नों और विशेष कोड के माध्यम से डेटाबेस में संग्रहीत डेटा तक पहुंचने के बजाय, विश्वसनीय सेवाएं एक मानक फाइल सिस्टम के समान पहुंच की अनुमति देती हैं।

रीस्टफुल सेवाओं का मुख्य हिस्सा घोषणात्मकता है। GET /widgets/109340 पर एक अनुरोध आपको 109340 की आईडी के साथ विजेट के लिए डेटा प्राप्त करने की संभावना है। मैं "संभावना" कहता हूं क्योंकि कोई गारंटी नहीं है। यह कार्यान्वयन पर निर्भर है। मुद्दा यह है कि आप आरईएसटी अनुरोध पर नज़र डाल सकते हैं और जान सकते हैं कि आप क्या लौटाएंगे। एसओएपी के साथ, यह बताना मुश्किल है कि आपके पास वाक्यविन्यास त्रुटि है या नहीं।

यदि /widgets/109340 मौजूद नहीं है, तो संदेश संदेश को वापस करने के बजाय, कुछ विशिष्ट मान के साथ सामग्री मौजूद है, सर्वर 404 Not Found कोड वापस कर सकता है, और उपयोगकर्ता को पता चलेगा कि विशेष आईडी नहीं है मौजूद।यदि 403 लौटा दिया गया है, तो उपयोगकर्ता को पता चलेगा कि आइटम मौजूद है, लेकिन उनके पास इसे एक्सेस करने की अनुमति नहीं है। ये अनुरोध प्रतिक्रिया कोड पहले से ही उन प्रोग्रामों द्वारा समर्थित हैं जो यूआरएल अनुरोध करते हैं, क्योंकि वे सभी सर्वरों के लिए आम हैं। यह आरईएसटी अनुरोधों को और अधिक लचीला बनाता है।

आरईएसटी आउटपुट प्रारूप पर भी लचीला है, /widgets/109340 एक JSON ऑब्जेक्ट वापस कर सकता है, लेकिन कोई कारण नहीं है कि यह बाइनरी डेटा, एचटीएमएल, एक्सएमएल, एसवीजी, वीडियो या किसी अन्य डेटा प्रारूप को वापस नहीं कर सकता है। CDN वर्जन वाली सामग्री को प्रस्तुत करने के लिए एक आरईएसटी एपीआई का उपयोग कर सकता है जो फाइल सिस्टम पर संग्रहीत किया जा सकता है या नहीं: GET /jQuery/1.0.0, GET /jQuery/1.7.1, और GET /jQuery/latest सभी विश्वसनीय अनुरोध हैं।

मैं आप समझते हैं कि Simple Object Access Protocol (SOAP)

+0

राज्य हस्तांतरण और एक घोषणात्मक इंटरफ़ेस बिल्कुल वही नहीं है। राज्य हस्तांतरण ग्राहक को वापस संसाधन प्रतिनिधित्व में हाइपरलिंकिंग है, और कॉल के बीच कोई भी सर्वर-साइड एप्लिकेशन स्थिति संग्रहीत नहीं की जा रही है। यह सर्वर, क्लाइंट और एप्लिकेशन के बीच decoupling के कई स्तरों की अनुमति देता है, और इस प्रकार स्केलेबिलिटी की दुनिया खोलता है। राज्य हस्तांतरण को सक्षम करने के लिए एक घोषणात्मक इंटरफ़ेस एक शर्त हो सकता है, लेकिन इसका मतलब यह नहीं है कि वे एक ही चीज़ हैं। –

+0

@ MerlynMorgan-ग्राहम, यदि आप एक बेहतर उत्तर प्राप्त कर चुके हैं तो सभी साधनों से सवाल का जवाब दें। – zzzzBov

+0

बस मदद करने की कोशिश कर रहा है। मैं अपमान करने का इरादा नहीं रखता था इसलिए अगर मैं चाहता हूं तो मैं क्षमा चाहता हूं :) मैं आपका सुझाव उठाऊंगा! –

संबंधित मुद्दे