REST और RESTful में क्या अंतर है


540

REST प्रणाली और RESTful प्रणाली के बीच अंतर क्या है?

कुछ चीजों से जो मैंने पढ़ी हैं उनमें से अधिकांश तथाकथित सेवाएं वास्तव में रैस्टफुल सेवाएं हैं। तो दोनों में क्या अंतर है।


3
प्रश्न का कारण यह है क्योंकि यदि आप लिंक में लेख पढ़ते हैं और देखते हैं कि डॉ। फील्डिंग सबसे अधिक आरईएस कार्यान्वयन के बारे में क्या सोचते हैं तो वे आरईएस सिस्टम बिल्कुल नहीं हैं। वे RESTful व्यवहार प्रदर्शित करते हैं लेकिन REST सिस्टम के रूप में वर्गीकृत नहीं किया जा सकता है।
AwkwardCoder

4
मैं लेख पढ़ता हूं, लेकिन मुझे नहीं लगता कि यह उनके लिए इस तरह के व्यर्थ के भेदों को जन्म देता है।
जेसनट्र्यू

3
REST पर विकिपीडिया लेख - en.wikipedia.org/wiki/Representational_State_Transfer - दूसरा पैराग्राफ - "REST बाधाओं के अनुरूप होने को अक्सर 'RESTful' कहा जाता है।"
नैट

1
@PramodNikumbh ने नीचे सही उत्तर दिया है। एक "REST" प्रणाली एक ऐसी प्रणाली है जो REST की एक व्यापक परिभाषा में फिट होती है। यह कम से कम कुछ बाकी सिद्धांतों को प्रदर्शित करता है। "रेस्टफुल" बहुत अधिक REST- अनुरूप प्रणाली का वर्णन करता है।
एंड्रयू नॉर्मन

खैर, मुझे लगता है कि नाम में एक भ्रम है, Restful में "ful" स्टेटलेस और स्टेटफुल को भ्रमित करेगा और वे दो अलग-अलग चीजें हैं, मेरे व्यक्तिगत विचार में REST और RESTful को STATELESS होना चाहिए। रेस्टलेस नाम के एक स्टेटिस्ट रेस्ट की कल्पना करें। :)
वहीद

जवाबों:


487

प्रतिनिधि राज्य स्थानांतरण (REST) सॉफ्टवेयर वास्तुकला की एक शैली है। जैसा कि रॉय फील्डिंग द्वारा एक शोध प्रबंध में वर्णित है, REST एक "वास्तुशिल्प शैली" है जो मूल रूप से वेब की मौजूदा तकनीक और प्रोटोकॉल का फायदा उठाती है।

रेस्टफुल का उपयोग आमतौर पर ऐसी वास्तुकला को लागू करने वाली वेब सेवाओं को संदर्भित करने के लिए किया जाता है।


146
तो REST वास्तुकला और RESTful एक विशेषण है?
manei_cc

4
@manei_cc: हालांकि व्यवहार में आप पाएंगे कि RESTful नाम की सेवाएँ जो REST आर्किटेक्चर का अनुसरण नहीं करती हैं और मूल रूप से REST-like, REST-wannabies इत्यादि हैं, इसलिए हमेशा ध्यान दें कि REST का उपयोग करके "RESTful सेवा" का निर्माण आवश्यक नहीं है। आर्किटेक्चर, लेकिन जैसा कि जस्टिन एथियर ने लिखा है: वेब की मौजूदा तकनीक और प्रोटोकॉल का फायदा उठाता है
अज़दार

7
RESTful का उपयोग API के लिए किया जाना चाहिए, जो वास्तव में REST का सम्मान करते हैं। मैंने बहुत से "REST" वेबसर्विस देखे जो केवल GET या POST का उपयोग करते थे। HTTP क्रियाओं, और URL नामकरण सम्मेलनों के पूर्ण उपयोग पर उद्दंड उच्चारण। लेकिन यह मेरी बात है।
मार्टिन

1
architectकिस? urls के https://translation.googleapis.com/language/translate/v2इस तरह शैली शैली है?
आसिफ मुश्ताक

1
stackoverflow.com/users/3807248/pramod-nikumbh ने इसका सही उत्तर दिया है
एंड्रयू नॉर्मन

192

बाकी आधारित सेवाएँ / वास्तुकला बनाम RESTFUL सेवाएँ / वास्तुकला

इन 2 को अलग या तुलना करने के लिए, आपको पता होना चाहिए कि REST क्या है ।

REST ( आरई प्रेजेंटेशनल S tate T ransfer) मूल रूप से कुछ सिद्धांतों वाले विकास की एक स्थापत्य शैली है:

  • यह स्टेटलेस होना चाहिए

  • यह केवल URI का उपयोग करके सर्वर से सभी संसाधनों तक पहुंचना चाहिए

  • इसमें इनबिल्ट एनक्रिप्शन नहीं है

  • इसका सत्र नहीं होता है

  • यह एक और केवल एक प्रोटोकॉल - HTTP का उपयोग करता है

  • CRUD संचालन करने के लिए, इसे HTTP क्रियाओं जैसे , और get, का उपयोग करना चाहिएpostputdelete

  • यह केवल JSON या XML, परमाणु, OData आदि (हल्के डेटा) के रूप में परिणाम वापस करना चाहिए

REST based services उपरोक्त सिद्धांतों में से कुछ का पालन करें और सभी नहीं

RESTFUL services इसका मतलब यह उपरोक्त सभी सिद्धांतों का पालन करता है।

यह की अवधारणा के समान है:

Object-based languagesसभी OOPs अवधारणाओं का समर्थन करता है, उदाहरण : C ++, C #

Object oriented languagesOOPs सुविधाओं में से कुछ का समर्थन करता है, उदाहरण : जावास्क्रिप्ट, VB


उदाहरण :

ASP DOT NET MVC 4 REST-Basedजबकि Microsoft WEB API है RESTFul

MVC उपरोक्त REST सिद्धांतों में से केवल कुछ का समर्थन करता है, जबकि WEB API उपरोक्त सभी उपरोक्त सिद्धांतों का समर्थन करता है।

MVC केवल REST API से निम्न का समर्थन करता है

  • हम URI का उपयोग करके संसाधन तक पहुँच सकते हैं

  • यह सर्वर से संसाधन तक पहुंचने के लिए HTTP क्रिया का समर्थन करता है

  • यह JSON, XML, यानी HTTPResponse के रूप में परिणाम लौटा सकता है।

हालांकि, उसी समय एमवीसी में

  • हम सत्र का उपयोग कर सकते हैं

  • हम इसे स्टेटफुल बना सकते हैं

  • हम नियंत्रक एक्शन विधि से वीडियो या छवि वापस कर सकते हैं जो मूल रूप से REST सिद्धांतों का उल्लंघन करता है

यही कारण है कि MVC है REST-Basedजबकि WEB एपीआई उपरोक्त सभी सिद्धांतों का समर्थन करता है और है RESTFul


10
मुझे समझ नहीं आ रहा है कि यह क्यों अस्वीकृत किया गया है, यह उत्तर प्रश्न को बहुत सारी स्पष्ट करने वाली जानकारी लाता है।
Marcovecchio

5
अब तक का सर्वश्रेष्ठ उत्तर
लिमोन

2
यह सबसे अच्छा जवाब है।
मेरियो मेयरेलस

2
आप REST के साथ FTP का उपयोग कर सकते हैं। कृपया देखें: stackoverflow.com/questions/35534812/…
madTech

7
उपरोक्त "ऑब्जेक्ट आधारित" और "ऑब्जेक्ट ओरिएंटेड" श्रेणियों के तहत भाषाएँ उलट हैं। ऑब्जेक्ट ओरिएंटेड भाषाएं सभी OOPS सिद्धांतों का पालन करती हैं, जबकि ऑब्जेक्ट आधारित कुछ का पालन करते हैं।
मचिफ

119

"REST" एक वास्तु प्रतिमान है। "रेस्टफुल" उस प्रतिमान का उपयोग करते हुए वर्णन करता है।


architectकिस? urls के https://translation.googleapis.com/language/translate/v2इस तरह शैली शैली है?
आसिफ मुश्ताक

2
एक REST आर्किटेक्चर को कई लक्षणों की आवश्यकता होती है। आप केवल URL दिखा कर REST सिद्धांतों का पालन नहीं कर सकते।
सिंगलशॉट

42

जैसा कि जेसन ने टिप्पणियों में कहा, RESTful का उपयोग केवल एक विशेषण के रूप में किया जाता है, जो कुछ ऐसी चीज़ों का वर्णन करता है जो REST बाधाओं का सम्मान करती हैं।


29

REST प्रतिनिधित्वपूर्ण राज्य हस्तांतरण के लिए खड़ा है। इसका मतलब यह है कि राज्य स्वयं हस्तांतरित नहीं है, बल्कि इसका केवल एक प्रतिनिधित्व है। सबसे आम उदाहरण एक शुद्ध HTML सर्वर आधारित ऐप (कोई जावास्क्रिप्ट) है। ब्राउज़र को एप्लिकेशन के बारे में कुछ भी नहीं पता है, लेकिन लिंक और संसाधनों के माध्यम से सर्वर ब्राउज़र में एप्लिकेशन की स्थिति को स्थानांतरित करने में सक्षम है। जहां एक बटन सामान्य रूप से एक नियमित विंडोज़ अनुप्रयोग में एक स्टेट वेरिएबल (जैसे पेज ओपन) बदलता है, ब्राउज़र में आपके पास एक लिंक होता है जो इस तरह के राज्य परिवर्तन का प्रतिनिधित्व करता है।

हाइपरमीडिया का उपयोग करने का विचार है। और शायद नए हाइपरमीडिया प्रकार बनाने के लिए। संभावित रूप से हम ब्राउज़र को जावास्क्रिप्ट / AJAX के साथ विस्तारित कर सकते हैं और नए कस्टम हाइपरमीडिया प्रकार बना सकते हैं। और हमारे पास एक वास्तविक REST अनुप्रयोग होगा।

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


23

REST वितरित सॉफ़्टवेयर के लिए सॉफ़्टवेयर आर्किटेक्चर की एक शैली है

REST बाधाओं के अनुरूप होने को 'RESTful' कहा जाता है।

SOAP के विकल्प के रूप में वेब सेवाओं के निर्माण के लिए आज बहुत उपयोग किया जाता है।

यहां आपके पास जांच के लिए कुछ लिंक हैं

http://en.wikipedia.org/wiki/Representational_State_Transfer
http://www.computerworld.com/s/article/297424/Representational_State_Transfer_REST_ http :
//www.ibm-developerworks/webservices/library/ws-restful/


13

उत्तर के लिए धन्यवाद। एलेक्स रोड्रिगेज का यह लेख पढ़ें जो बताता है कि एक Restful वेब सेवा में 4 बुनियादी विशेषताएं हैं जो हैं:

  1. HTTP विधियों का स्पष्ट रूप से उपयोग करें।
  2. स्टेटलेस हो।
  3. निर्देशिका संरचना-जैसे URI को बेनकाब करें।
  4. XML, जावास्क्रिप्ट ऑब्जेक्ट नोटेशन (JSON), या दोनों को स्थानांतरित करें।

इसमें वास्तव में 6 बाधाएँ हैं।
आयरनब्लोसम 12

2
@IronBlossom देखभाल गुम दो के साथ उत्तर को अद्यतन करने के लिए?
पॉल फ्लेमिंग

1
लिंक मृत, नया URL प्रतीत होता है आईबीएम
रेस्टफुल

10

रिप्रेजेंटेटिव स्टेट ट्रांसफर (आरईएसटी) वर्ल्ड वाइड वेब जैसे वितरित हाइपरमीडिया सिस्टम के लिए सॉफ्टवेयर आर्किटेक्चर की एक शैली है। प्रतिनिधि स्टेट ट्रांसफर शब्द को 2000 में रॉय फील्डिंग 1 [2] द्वारा अपने डॉक्टरेट शोध प्रबंध में पेश और परिभाषित किया गया था । फील्डिंग हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल (HTTP) विनिर्देश संस्करण 1.0 और 1.1 के प्रमुख लेखकों में से एक है। REST बाधाओं के अनुरूप होने को 'RESTful' कहा जाता है। स्रोत: विकिपीडिया


8

वेब सेवाएं अनिवार्य रूप से वेब साइट हैं जिनकी सामग्री का उपयोग कंप्यूटर प्रोग्राम द्वारा किया जाता है, न कि लोगों द्वारा। REST वास्तु सिद्धांतों का एक सेट है जो यह निर्धारित करता है कि वेब सेवाओं को HTTP और अन्य वेब मानकों का अधिकतम लाभ उठाना चाहिए, ताकि प्रोग्राम उन सभी अच्छे सामानों को प्राप्त करें जो लोग पहले से ही वेब से बाहर निकल सकते हैं। REST को अक्सर SOAP वेब सेवाओं और अन्य "दूरस्थ प्रक्रिया कॉल" उन्मुख वेब सेवाओं के साथ विपरीत किया जाता है।

Parleys.com पर REST पर स्टीफन टिलकोव की प्रस्तुतियां काफी अच्छी हैं, खासकर यह एक

एक पुस्तक के लिए, आप रिचर्डसन और रूबी की बाकी वेब सेवाओं की तुलना में बेहतर नहीं हो सकते ।


तो एक नियमित वेबसाइट को REST एप्लिकेशन माना जा सकता है?
योयो_फुन

1
@yoyo_fun: हाँ, एक नियमित रूप से वेबसाइट का निर्माण भी किया जा सकता है। अमूर्त के कुछ स्तर पर कि क्या सर्वर किसी प्रोग्राम में मानव या JSON (कहना) पर HTML लौटाता है, सारहीन है।
बजे जिम फेरनस


4

रिचर्डसन मैच्योरिटी मॉडल में परिभाषित एपीआई के 4 स्तर हैं। इन्हें इस प्रकार परिभाषित किया गया है:

  • स्तर 0: ऐसी कोई भी प्रणाली जिसके सभी एपिस (SOAP या RPC इस श्रेणी में आते हैं) के लिए एक एकल बिंदु है। लेवल 0 एपिस "कमांड्स" के समान हो सकता है।

  • स्तर 1: एक रिसोर्सयूरी वर्णित प्रणाली। यह एक प्रणाली है जो कई इकाई-आधारित यूआरआई को परिभाषित करता है (एक स्तर 0 सिस्टम की तरह एकल समापन बिंदु होने के बजाय)। ये URI उस संसाधन के विरुद्ध विभिन्न क्रियाओं को कार्यान्वित करने के लिए विभिन्न http क्रियाओं (POST, GET, PUT, आदि) का उपयोग कर सकते हैं।

  • स्तर 2: उर्फ ​​स्तर 1 w / मानक HTTP विधियों / क्रियाओं और बहु ​​स्थिति कोड प्रतिक्रियाओं का एक सुसंगत उपयोग

  • स्तर 3: उर्फ ​​स्तर 2 प्लस हेटोएएस (हाइपरमीडिया प्रतिक्रिया में शामिल है जो अतिरिक्त कॉल का वर्णन करता है जो आप कर सकते हैं)

जबकि स्तर 1, स्तर 2, और स्तर 3 को REST सिस्टम के रूप में माना जा सकता है, केवल कठोर स्तर (उर्फ स्तर 2 और स्तर 3) को RESTful माना जाता है।

इसलिए अनिवार्य रूप से सभी रैस्टफुल रीस्ट रीप्स होते हैं, लेकिन सभी रीस्ट एपिस रेस्टफुल नहीं होते हैं

रिचर्डसन परिपक्वता मॉडल की परिभाषा


2

आरईएसटी को एक आर्किटेक्चरल "क्लास" के रूप में सोचें, जबकि रेस्टफुल उस क्लास का जाना-माना "उदाहरण" है।

कृपया "मन"; हम यहां "वास्तविक" प्रोग्रामिंग ऑब्जेक्ट्स के साथ काम नहीं कर रहे हैं।


1

एक "REST सेवा" और "RESTful सेवा" एक और एक ही हैं।

RESTful प्रणाली कोई भी प्रणाली है जो REST सम्मेलनों का अनुसरण करती है जैसा कि मूल दस्तावेज में परिभाषित किया गया है जो RESTO नेटवर्क अनुप्रयोगों का विचार बनाता है

यह ध्यान देने योग्य है कि RESTfulness के अलग-अलग स्तर हैं। कुल मिलाकर, REST एक शैली है, एक मानक नहीं है, इसलिए आवश्यकताओं के आधार पर व्याख्या के लिए जगह है। एक उदाहरण श्रेणीबद्ध संसाधन यूआरएल (जैसे है /things/ID/relatedthings) फ्लैट यूआरएल बनाम (जैसे /things/IDऔर /relatedthings?thing=ID)


1

REST (प्रत्यावेदन राज्य स्थानांतरण) एक वास्तुकला है जिसके उपयोग से WebServices बनाई जाती हैं।

तथा

RESTful, REST आर्किटेक्चर का उपयोग करके सेवाओं को लिखने का तरीका है। ग्राहकों के साथ बातचीत करने के लक्ष्य को पहचानने के लिए प्रतिष्ठित सेवाएं संसाधनों को उजागर करती हैं।


0

REST वेब सेवाएँ बनाने के लिए एक वास्तुशिल्प पैटर्न है। Restful सेवा वह है जो उस पैटर्न को लागू करती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.