http रीस्टफुल प्रोग्रामिंग वास्तव में क्या है?




rest definition (24)

रीस्टफुल प्रोग्रामिंग वास्तव में क्या है?


जवाब बहुत आसान है, रॉय फील्डिंग द्वारा लिखित एक शोध प्रबंध है।] 1 उस शोध प्रबंध में वह आरईएसटी सिद्धांतों को परिभाषित करता है। यदि कोई आवेदन उन सभी सिद्धांतों को पूरा करता है, तो वह एक आरईएसटी आवेदन है।

roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven उसके बाद रीस्टफुल शब्द भी थक गया था। आजकल हम वेब एपीआई और हाइपरमीडिया एपीआई के बारे में बात कर रहे हैं , क्योंकि अधिकांश तथाकथित आरईएसटी अनुप्रयोगों ने वर्दी इंटरफेस बाधा के हैटओएएस भाग को पूरा नहीं किया है।

आरईएसटी बाधाएं निम्नलिखित हैं:

  1. क्लाइंट-सर्वर आर्किटेक्चर

    तो यह उदाहरण के लिए PUB / SUB सॉकेट के साथ काम नहीं करता है, यह आरईक्यू / आरईपी पर आधारित है।

  2. स्टेटलेस संचार

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

  3. यदि आप कर सकते हैं तो कैश का उपयोग

    तो आपको बार-बार वही अनुरोधों की सेवा करने की ज़रूरत नहीं है।

  4. क्लाइंट और सर्वर के बीच सामान्य अनुबंध के रूप में एक समान इंटरफ़ेस

    क्लाइंट और सर्वर के बीच अनुबंध सर्वर द्वारा बनाए रखा नहीं है। दूसरे शब्दों में ग्राहक को सेवा के कार्यान्वयन से decoupled किया जाना चाहिए। संसाधनों की पहचान करने के लिए आईआरआई (यूआरआई) मानक जैसे मानक समाधानों का उपयोग करके आप इस स्थिति तक पहुंच सकते हैं, संदेशों का आदान-प्रदान करने के लिए HTTP मानक, मानक सीआईएमई प्रकारों को शरीर क्रमबद्धता प्रारूप, मेटाडाटा (संभवतः आरडीएफ vocabs, microformats, आदि) का वर्णन करने के लिए संदेश निकाय के विभिन्न हिस्सों के अर्थशास्त्र का वर्णन करें। क्लाइंट से आईआरआई संरचना को कम करने के लिए, आपको ग्राहकों को हाइपरलिंक्स जैसे हाइपरमिडिया प्रारूप (HTML, JSON-LD, HAL, आदि) में भेजना होगा। तो एक ग्राहक अपने वर्तमान लक्ष्य को प्राप्त करने के लिए उचित राज्य संक्रमण के माध्यम से आवेदन की राज्य मशीन पर नेविगेट करने के लिए हाइपरलिंक्स को निर्दिष्ट मेटाडेटा (संभावित रूप से लिंक संबंध, आरडीएफ vocabs) का उपयोग कर सकते हैं।

    उदाहरण के लिए जब कोई ग्राहक वेबशॉप को ऑर्डर भेजना चाहता है, तो उसे वेबशॉप द्वारा भेजे गए प्रतिक्रियाओं में हाइपरलिंक्स की जांच करनी होगी। लिंक की जांच करके यह एक http://schema.org/OrderAction साथ वर्णित पाया गया है। क्लाइंट schema.org vocab को जानता है, इसलिए यह समझता है कि इस हाइपरलिंक को सक्रिय करके यह ऑर्डर भेज देगा। इसलिए यह हाइपरलिंक को सक्रिय करता है और उचित शरीर के साथ एक POST https://example.com/api/v1/order संदेश भेजता है। उसके बाद सेवा संदेश को संसाधित करती है और उचित HTTP स्थिति शीर्षलेख वाले परिणाम के साथ प्रतिक्रिया देती है, उदाहरण के लिए 201 - created सफलता से 201 - created गई। विस्तृत मेटाडेटा वाले संदेशों को एनोटेट करने के लिए मानक समाधान, आरडीएफ प्रारूप का उपयोग करने के लिए, उदाहरण के लिए JSON-LD एक आरईएसटी vocab के साथ, उदाहरण के लिए Hydra और डोमेन विशिष्ट vocabs जैसे schema.org या किसी अन्य लिंक किए गए डेटा vocab और शायद एक कस्टम अनुप्रयोग विशिष्ट vocab अगर जरूरत है। अब यह आसान नहीं है, यही कारण है कि अधिकांश पीपीएल एचएएल और अन्य साधारण प्रारूपों का उपयोग करते हैं जो आमतौर पर केवल एक आरईएसटी vocab प्रदान करते हैं, लेकिन कोई लिंक डेटा समर्थन नहीं है।

  5. स्केलेबिलिटी बढ़ाने के लिए एक स्तरित प्रणाली का निर्माण

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

    उदाहरण के लिए एक क्लाइंट परत है जिसमें क्लाइंट शामिल हैं और नीचे एक सेवा परत है जिसमें एक ही सेवा है। अब आप उनके बीच एक क्लाइंट साइड कैश जोड़ सकते हैं। उसके बाद आप एक और सेवा उदाहरण और लोड बैलेंसर जोड़ सकते हैं, और इसी तरह ... क्लाइंट कोड और सेवा कोड नहीं बदलेगा।

  6. ग्राहक कार्यक्षमता बढ़ाने के लिए मांग पर कोड

    यह बाधा वैकल्पिक है। उदाहरण के लिए आप क्लाइंट को एक विशिष्ट मीडिया प्रकार के लिए एक पार्सर भेज सकते हैं, और इसी तरह ... ऐसा करने के लिए आपको क्लाइंट में मानक प्लगइन लोडर सिस्टम की आवश्यकता हो सकती है, या आपका क्लाइंट प्लगइन लोडर समाधान के साथ जोड़ा जाएगा ।

आरईएसटी बाधाओं का परिणाम एक उच्च स्केलेबल सिस्टम है जहां ग्राहकों को सेवाओं के कार्यान्वयन से हटा दिया जाता है। तो ग्राहक वेब पर ब्राउज़र की तरह सामान्य, पुन: प्रयोज्य हो सकते हैं। ग्राहक और सेवाएं समान मानकों और vocabs साझा करते हैं, ताकि वे इस तथ्य के बावजूद एक-दूसरे को समझ सकें कि ग्राहक सेवा के कार्यान्वयन के विवरण को नहीं जानता है। यह स्वचालित ग्राहकों को बनाना संभव बनाता है जो अपने लक्ष्यों को प्राप्त करने के लिए आरईएसटी सेवाओं को ढूंढ और उपयोग कर सकते हैं। लंबी अवधि में ये ग्राहक एक-दूसरे से संवाद कर सकते हैं और एक दूसरे पर विश्वास कर सकते हैं, जैसे मनुष्य करते हैं। यदि हम ऐसे ग्राहकों को सीखने के पैटर्न जोड़ते हैं, तो परिणाम एक सर्वर पार्क के बजाय मशीनों के वेब का उपयोग करके एक या अधिक एआई होगा। तो अंत में बर्नर्स ली का सपना:अर्थपूर्ण वेब और कृत्रिम बुद्धि वास्तविकता होगी। तो 2030 में हम स्काईनेट द्वारा समाप्त हो गए। तब तक ... ;-)


मैं कहूंगा कि रीस्टफुल प्रोग्रामिंग सिस्टम (एपीआई) बनाने के बारे में होगा जो आरईएसटी वास्तुशिल्प शैली का पालन करें।

मुझे डॉ। एम। एलकस्टीन द्वारा आरईएसटी के बारे में ट्यूटोरियल समझने और उस भाग को उद्धृत करने के लिए यह शानदार, संक्षिप्त और आसान पाया गया जो अधिकांश भाग के लिए आपके प्रश्न का उत्तर देगा:

http://rest.elkstein.org/

आरईएसटी नेटवर्किंग अनुप्रयोगों को डिजाइन करने के लिए एक वास्तुकला शैली है । विचार यह है कि, मशीनों के बीच कनेक्ट करने के लिए कॉरबा, आरपीसी या एसओएपी जैसी जटिल तंत्रों का उपयोग करने के बजाय, सरल HTTP का उपयोग मशीनों के बीच कॉल करने के लिए किया जाता है।

  • कई मायनों में, HTTP वाइड वेब स्वयं HTTP पर आधारित है, जिसे आरईएसटी-आधारित आर्किटेक्चर के रूप में देखा जा सकता है।

रीस्टफुल एप्लिकेशन एप्लिकेशन (डेटा बनाने और / या अपडेट) पोस्ट करने के लिए HTTP अनुरोधों का उपयोग करते हैं, डेटा पढ़ते हैं (उदाहरण के लिए, क्वेरी बनाते हैं), और डेटा हटाते हैं। इस प्रकार, आरईएसटी सभी चार सीआरयूडी (बनाएँ / पढ़ें / अपडेट / हटाएं) संचालन के लिए HTTP का उपयोग करता है।

मुझे नहीं लगता कि आपको स्टैक ओवरफ्लो के बाहर आरईएसटी के बारे में सुनने के लिए बेवकूफ महसूस करना चाहिए ..., मैं एक ही स्थिति में होगा !; इस अन्य सवाल के जवाब में आरईएसटी अब बड़ा क्यों हो रहा है, कुछ भावनाओं को कम कर सकता है।


यह आश्चर्यजनक रूप से लंबी "चर्चा" है और अभी तक कम से कम कहने में उलझन में है।

IMO:

1) एक बड़ी संयुक्त और बियर के बहुत सारे बिना आराम से प्रोग्रामिंग जैसी कोई चीज नहीं है :)

2) प्रतिनिधि राज्य स्थानांतरण (आरईएसटी) रॉय फील्डिंग के शोध प्रबंध में निर्दिष्ट एक वास्तुशिल्प शैली है । इसमें कई बाधाएं हैं। यदि आपकी सेवा / ग्राहक उन पर सम्मान करते हैं तो यह सही है। यह बात है।

आप बाधाओं को संक्षेप में सारांशित कर सकते हैं:

  • स्टेटलेस संचार
  • सम्मान HTTP चश्मा (यदि HTTP का उपयोग किया जाता है)
  • संचरित सामग्री स्वरूपों को स्पष्ट रूप से संचारित करता है
  • आवेदन राज्य के इंजन के रूप में hypermedia का उपयोग करें

एक और roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven जो चीजों को अच्छी तरह से बताती है।

बहुत से जवाब कॉपी / पेस्ट की गई वैध जानकारी को मिश्रित करते हैं और कुछ भ्रम जोड़ते हैं। लोग यहां रेस्टफुल यूआरआई के बारे में स्तरों के बारे में बात करते हैं (ऐसी कोई बात नहीं है!), HTTP विधियों को प्राप्त करें, पोस्ट करें, पुट करें ... REST इसके बारे में नहीं है या न केवल इसके बारे में है।

उदाहरण के लिए लिंक - एक सुंदर दिखने वाला एपीआई होना अच्छा लगता है लेकिन अंत में क्लाइंट / सर्वर वास्तव में उन लिंकों की परवाह नहीं करता है जिन्हें आप प्राप्त करते हैं / भेजते हैं, यह महत्वपूर्ण सामग्री है।

अंत में किसी भी विश्वसनीय ग्राहक को तब तक किसी भी विश्वसनीय सेवा का उपभोग करने में सक्षम होना चाहिए जब तक कि सामग्री प्रारूप ज्ञात न हो।


आरईएसटी एक वास्तुकला शैली है जो वेब-मानकों और HTTP प्रोटोकॉल (2000 में पेश की गई) पर आधारित है।

एक आरईएसटी आधारित वास्तुकला में, सब कुछ एक संसाधन है (उपयोगकर्ता, आदेश, टिप्पणियां)। HTTP मानक विधियों (GET, PUT, पैच, डिलीट इत्यादि) के आधार पर एक संसाधन को एक सामान्य इंटरफ़ेस के माध्यम से एक्सेस किया जाता है।

एक आरईएसटी आधारित वास्तुकला में आपके पास एक आरईएसटी सर्वर है जो संसाधनों तक पहुंच प्रदान करता है। एक आरईएसटी ग्राहक आरईएसटी संसाधनों तक पहुंच और संशोधित कर सकता है।

प्रत्येक संसाधन को HTTP सामान्य संचालन का समर्थन करना चाहिए। संसाधनों को वैश्विक आईडी द्वारा पहचाना जाता है (जो आमतौर पर यूआरआई होते हैं)।

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

HTTP विधियां:

पुट, प्राप्त, पोस्ट और डिलीट विधियों का उपयोग आरईएसटी आधारित आर्किटेक्चर में सामान्य रूप से किया जाता है। निम्नलिखित तालिका इन परिचालनों का स्पष्टीकरण देती है।

  • बिना साइड इफेक्ट्स के संसाधन के पढ़ने की पहुंच को परिभाषित करता है। संसाधन जीईटी अनुरोध के माध्यम से कभी नहीं बदला जाता है, उदाहरण के लिए, अनुरोध का कोई दुष्प्रभाव नहीं है (idempotent)।
  • PUT एक नया संसाधन बनाता है। यह भी बेवकूफ होना चाहिए।
  • हटाएं संसाधनों को हटा दें। ऑपरेशन बेवकूफ हैं। वे अलग-अलग परिणामों के बिना दोहरा सकते हैं।
  • POST एक मौजूदा संसाधन अद्यतन करता है या एक नया संसाधन बनाता है।

आरईएसटी प्रतिनिधि राज्य हस्तांतरण के लिए खड़ा है ।

यह एक स्टेटलेस, क्लाइंट-सर्वर, कैशेबल संचार प्रोटोकॉल पर निर्भर करता है - और लगभग सभी मामलों में, HTTP प्रोटोकॉल का उपयोग किया जाता है।

आरईएसटी अक्सर मोबाइल एप्लिकेशन, सोशल नेटवर्किंग वेब साइट्स, मैशप टूल्स और स्वचालित बिजनेस प्रोसेस में उपयोग किया जाता है। आरईएसटी शैली पर जोर दिया जाता है कि सीमित संख्या में संचालन (क्रियाएं) होने से ग्राहकों और सेवाओं के बीच बातचीत बढ़ जाती है। लचीलापन संसाधनों (संज्ञाओं) को अपने स्वयं के अद्वितीय सार्वभौमिक संसाधन संकेतक (यूआरआई) असाइन करके प्रदान किया जाता है।

आराम के बारे में परिचय


आरईएसटी (प्रतिनिधि राज्य हस्तांतरण) नामक एक वास्तुकला शैली का समर्थन करता है कि वेब अनुप्रयोगों को HTTP का उपयोग करना चाहिए क्योंकि यह मूल रूप से कल्पना की गई थी । लुकअप को GET अनुरोधों का उपयोग करना चाहिए। GET क्रमशः उत्परिवर्तन, निर्माण और हटाने के लिए उपयोग किया जाना चाहिए।

आरईएसटी समर्थक यूआरएल का समर्थन करते हैं, जैसे कि

http://myserver.com/catalog/item/1729

लेकिन आरईएसटी आर्किटेक्चर को इन "सुंदर यूआरएल" की आवश्यकता नहीं है। पैरामीटर के साथ एक अनुरोध प्राप्त करें

http://myserver.com/catalog?item=1729

रीस्टफुल के रूप में हर बिट है।

ध्यान रखें कि जानकारी अपडेट करने के लिए अनुरोधों का कभी भी उपयोग नहीं किया जाना चाहिए। उदाहरण के लिए, एक कार्ट में एक आइटम जोड़ने के लिए एक GET अनुरोध

http://myserver.com/addToCart?cart=314159&item=1729

उचित नहीं होगा। अनुरोध प्राप्त करें idempotent होना चाहिए। यही है, दो बार अनुरोध जारी करना एक बार इसे जारी करने से अलग नहीं होना चाहिए। अनुरोधों को कैश करने योग्य बनाता है। एक "कार्ट में जोड़ें" अनुरोध बेवकूफ नहीं है-इसे दो बार जारी करने से आइटम की दो प्रतियां कार्ट में जोड़ती हैं। इस संदर्भ में एक POST अनुरोध स्पष्ट रूप से उपयुक्त है। इस प्रकार, यहां तक ​​कि एक विश्वसनीय वेब एप्लिकेशन को POST अनुरोधों के अपने हिस्से की आवश्यकता होती है।

यह डेविड एम। गेरी द्वारा उत्कृष्ट पुस्तक कोर जावासेवर चेहरे की किताब से लिया गया है।


आरईएसटी क्या है?

आधिकारिक शब्दों में आरईएसटी, आरईएसटी वर्तमान "वेब" मूलभूत सिद्धांतों का उपयोग करके कुछ सिद्धांतों पर निर्मित एक वास्तुशिल्प शैली है। वेब के 5 मूलभूत सिद्धांत हैं जिन्हें आरईएसटी सेवाओं को बनाने के लिए लीवरेज किया गया है।

  • सिद्धांत 1: सबकुछ एक संसाधन है जो आरईएसटी वास्तुशिल्प शैली में है, डेटा और कार्यक्षमता को संसाधन माना जाता है और समान संसाधन पहचानकर्ताओं (यूआरआई) का उपयोग करके एक्सेस किया जाता है, आमतौर पर वेब पर लिंक।
  • सिद्धांत 2: प्रत्येक संसाधन को एक अद्वितीय पहचानकर्ता (यूआरआई) द्वारा पहचाना जाता है
  • सिद्धांत 3: सरल और समान इंटरफेस का प्रयोग करें
  • सिद्धांत 4: संचार द्वारा संचार किया गया है
  • सिद्धांत 5: स्टेटलेस बनें

मैं माफी माँगता हूं अगर मैं सीधे सवाल का जवाब नहीं दे रहा हूं, लेकिन अधिक विस्तृत उदाहरणों के साथ यह सब समझना आसान है। सभी अमूर्तता और शब्दावली के कारण फील्डिंग को समझना आसान नहीं है।

यहां एक अच्छा उदाहरण है:

आरईएसटी और हाइपरटेक्स्ट समझाते हुए: स्पैम-ई स्पैम सफाई रोबोट

और इससे भी बेहतर, यहां सरल उदाहरणों के साथ एक साफ स्पष्टीकरण है (पावरपॉइंट अधिक व्यापक है, लेकिन आप इसे HTML संस्करण में अधिकतर प्राप्त कर सकते हैं):

http://www.xfront.com/REST.ppt या http://www.xfront.com/REST.html

उदाहरण पढ़ने के बाद, मैं देख सकता था कि केन कह रहा है कि आरईएसटी हाइपरटेक्स्ट संचालित है। मुझे वास्तव में यकीन नहीं है कि वह सही है, क्योंकि वह / उपयोगकर्ता / 123 एक यूआरआई है जो संसाधन को इंगित करता है, और यह मुझे स्पष्ट नहीं है कि यह केवल इसलिए अचूक है क्योंकि क्लाइंट इसे "ऑफ-बैंड" के बारे में जानता है।

वह एक्सफ़्रंट दस्तावेज़ आरईएसटी और एसओएपी के बीच का अंतर बताता है, और यह भी वास्तव में सहायक है। जब फील्डिंग कहती है, " roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven ", यह स्पष्ट है कि आरपीसी रीस्टफुल नहीं है, इसलिए इसके लिए सटीक कारण देखना उपयोगी है। (एसओएपी आरपीसी का एक प्रकार है।)


आरईएसटी की मेरी मूल रूपरेखा यहां दी गई है। मैंने एक यथार्थवादी वास्तुकला में प्रत्येक घटकों के पीछे सोच को प्रदर्शित करने की कोशिश की ताकि अवधारणा को समझना अधिक सहज हो। उम्मीद है कि यह कुछ लोगों के लिए आरईएसटी को नष्ट करने में मदद करता है!

आरईएसटी (प्रतिनिधि राज्य हस्तांतरण) एक डिज़ाइन आर्किटेक्चर है जो बताता है कि नेटवर्क किए गए संसाधन (यानी नोड्स जो जानकारी साझा करते हैं) को डिज़ाइन और संबोधित किया जाता है। आम तौर पर, एक विश्वसनीय वास्तुकला यह बनाता है कि क्लाइंट (अनुरोध करने वाली मशीन) और सर्वर (प्रतिक्रिया मशीन) क्लाइंट के बिना डेटा को पढ़ने, लिखने और अपडेट करने का अनुरोध कर सकता है, यह जानने के लिए कि सर्वर कैसे काम करता है और सर्वर पास कर सकता है क्लाइंट के बारे में कुछ भी जानने की आवश्यकता के बिना इसे वापस। ठीक है, अच्छा ... लेकिन हम अभ्यास में यह कैसे करते हैं?

  • सबसे स्पष्ट आवश्यकता यह है कि किसी प्रकार की सार्वभौमिक भाषा होने की आवश्यकता है ताकि सर्वर क्लाइंट को बता सके कि वह अनुरोध के साथ क्या करने का प्रयास कर रहा है और सर्वर के जवाब देने के लिए क्या कर रहा है।

  • लेकिन किसी दिए गए संसाधन को खोजने के लिए और फिर क्लाइंट को बताएं कि वह संसाधन कहां रहता है, संसाधनों पर इशारा करने का सार्वभौमिक तरीका होना चाहिए। यह वह जगह है जहां यूनिवर्सल रिसोर्स आइडेंटिफायर (यूआरआई) आते हैं; वे संसाधन खोजने के लिए मूल रूप से अद्वितीय पते हैं।

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

  • इसलिए, हम प्रतिबंध लगाते हैं कि क्लाइंट और सर्वर के बीच प्रत्येक अनुरोध-प्रतिक्रिया जोड़ी स्वतंत्र है, जिसका अर्थ है कि सर्वर को पिछले अनुरोधों (क्लाइंट-सर्वर इंटरैक्शन के पिछले राज्य) के बारे में कुछ भी याद नहीं करना है निवेदन। इसका मतलब है कि हम चाहते हैं कि हमारी बातचीत स्टेटलेस हो।

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

  • आखिरी चीज जो आप अक्सर यहां तक ​​कि रिक्त आर्किटेक्चर के बारे में बताते हैं कि वे स्तरित हैं। ग्राहक और सर्वर के बीच बातचीत की हमारी चर्चा में हम वास्तव में इस आवश्यकता पर पूरी तरह से चर्चा कर रहे हैं। असल में, इसका मतलब है कि हमारी प्रणाली में प्रत्येक परत केवल आसन्न परतों के साथ बातचीत करती है। तो हमारी चर्चा में, क्लाइंट लेयर हमारी सर्वर परत (और इसके विपरीत) के साथ इंटरैक्ट करता है, लेकिन अन्य सर्वर परतें हो सकती हैं जो प्राथमिक सर्वर प्रक्रिया को उस अनुरोध के लिए मदद करती हैं जो क्लाइंट सीधे संवाद नहीं करता है। इसके बजाय, सर्वर आवश्यकतानुसार अनुरोध पर गुजरता है।

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


एपीआई परीक्षण क्या है ?

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

बाकी एपीआई

आरईएसटी: प्रतिनिधि राज्य स्थानांतरण।

  • यह उन कार्यों की व्यवस्था है जिन पर परीक्षक अनुरोध करते हैं और प्रतिक्रिया प्राप्त करते हैं। आरईएसटी एपीआई इंटरैक्शन में HTTP प्रोटोकॉल के माध्यम से किए जाते हैं।
  • आरईएसटी नेटवर्क पर एक दूसरे के साथ कंप्यूटर के बीच संचार की अनुमति भी देता है।
  • संदेशों को भेजने और प्राप्त करने के लिए, इसमें HTTP विधियों का उपयोग करना शामिल है, और वेब सेवाओं के विपरीत, इसे सख्त संदेश परिभाषा की आवश्यकता नहीं है।
  • आरईएसटी संदेश अक्सर फॉर्म को एक्सएमएल, या जावास्क्रिप्ट ऑब्जेक्ट नोटेशन (जेएसओएन) के रूप में स्वीकार करते हैं।

4 आम तौर पर प्रयुक्त एपीआई तरीके: -

  1. प्राप्त करें: - यह केवल संसाधन तक पहुंच प्रदान करता है।
  2. पोस्ट: - इसका उपयोग नए संसाधन को बनाने या अपडेट करने के लिए किया जाता है।
  3. PUT: - इसका उपयोग किसी मौजूदा संसाधन को अद्यतन या प्रतिस्थापित करने या नया संसाधन बनाने के लिए किया जाता है।
  4. हटाएं: - इसका उपयोग संसाधन को हटाने के लिए किया जाता है।

टेस्ट एपीआई मैन्युअल रूप से कदम: -

एपीआई मैन्युअल रूप से उपयोग करने के लिए, हम ब्राउज़र आधारित आरईएसटी एपीआई प्लगइन्स का उपयोग कर सकते हैं।

  1. पोस्टमैन (क्रोम) / आरईएसटी (फ़ायरफ़ॉक्स) प्लगइन स्थापित करें
  2. एपीआई यूआरएल दर्ज करें
  3. आरईएसटी विधि का चयन करें
  4. सामग्री-शीर्षलेख का चयन करें
  5. अनुरोध JSON दर्ज करें (पोस्ट)
  6. भेजने पर क्लिक करें
  7. यह आउटपुट प्रतिक्रिया वापस कर देगा

आरईएसटी एपीआई स्वचालित करने के लिए कदम


बाकी का मुद्दा यह है कि यदि हम बुनियादी परिचालनों (http क्रियाओं) के लिए एक सामान्य भाषा का उपयोग करने के लिए सहमत हैं, तो बुनियादी ढांचे को उन्हें समझने और उन्हें ठीक से अनुकूलित करने के लिए कॉन्फ़िगर किया जा सकता है, उदाहरण के लिए, कैशिंग हेडर का उपयोग करके कैशिंग लागू करने के लिए स्तरों।

एक उचित ढंग से कार्यान्वित आराम से जीईटी ऑपरेशन के साथ, इससे कोई फर्क नहीं पड़ता कि जानकारी आपके सर्वर के डीबी, आपके सर्वर के मेमकेचे, सीडीएन, प्रॉक्सी कैश, आपके ब्राउज़र का कैश या आपके ब्राउज़र का स्थानीय स्टोरेज से आता है। उपवास, सबसे आसानी से अद्यतित अद्यतित स्रोत का उपयोग किया जा सकता है।

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


यह हर जगह बहुत कम उल्लेख किया गया है लेकिन रिचर्डसन की परिपक्वता मॉडल वास्तव में यह तय करने के सर्वोत्तम तरीकों में से एक है कि किसी का एपीआई कितना शांत है। इसके बारे में यहां अधिक जानकारी:

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


आरईएसटी एक वास्तुकला पैटर्न और लेखन वितरित अनुप्रयोगों की शैली है। यह संकीर्ण अर्थ में एक प्रोग्रामिंग शैली नहीं है।

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

घर शैली के विपरीत आरईएसटी लगातार और व्यावहारिक रूप से लागू होने का कठिन समय रहा है। यह जानबूझकर हो सकता है। डिजाइनर को अपना वास्तविक कार्यान्वयन छोड़ना। तो आप जो भी चाहते हैं उसे करने के लिए स्वतंत्र हैं, जब तक आप शोध प्रबंध में निर्धारित बाधाओं को पूरा करते हैं, आप आरईएसटी सिस्टम बना रहे हैं।

बोनस:

संपूर्ण वेब आरईएसटी पर आधारित है (या आरईएसटी वेब पर आधारित था)। इसलिए एक वेब डेवलपर के रूप में आप इसके बारे में जानना चाहते हैं हालांकि अच्छे वेब ऐप्स लिखना आवश्यक नहीं है।


आरईएसटी एक वितरित सिस्टम (जैसे डब्ल्यूडब्ल्यूडब्ल्यू) सॉफ्टवेयर आर्किटेक्चर शैली है, आप कल्पना कर सकते हैं कि यह एक अच्छी तरह से डिज़ाइन किया गया वेब एप्लिकेशन नियम है: इंटरनेट वेब पेजों का एक समूह (वर्चुअल स्टेट मशीन), जिसमें लिंक पर क्लिक करके हाइपरलिंक (राज्य संक्रमण ), परिणाम अगला वेब पेज है (जिसका अर्थ है कि आवेदन की अगली स्थिति)।

आरईएसटी नेटवर्क सिस्टम का वर्णन करता है जिसमें तीन भाग होते हैं:

  1. डेटा तत्व (संसाधन, संसाधन पहचानकर्ता, प्रतिनिधित्व)
  2. कनेक्टर (क्लाइंट, सर्वर, कैश, रिज़ॉल्वर, सुरंग)
  3. घटक (मूल सर्वर, गेटवे, प्रॉक्सी, उपयोगकर्ता एजेंट)

आरईएसटी निम्नलिखित शर्तों को सख्ती से पूरा करता है:

  1. एप्लिकेशन कार्यक्षमता की स्थिति संसाधनों में विभाजित है
  2. प्रत्येक संसाधन हाइपरलिंक्स पोजीशनिंग सिंटैक्स के रूप में उपयोग किया जाता है (यानी, डब्ल्यूडब्ल्यूडब्ल्यू यूआरआई में)
  3. सभी संसाधन संसाधन संक्रमण स्थिति के साथ क्लाइंट के बीच एक समान इंटरफ़ेस साझा करते हैं, जिनमें निम्न शामिल हैं:
    1. अच्छी तरह से परिभाषित संचालन का सीमित सेट (यानी HTTP GET / POST / PUT / DELETE में)
    2. सामग्री प्रारूप सामग्री प्रकारों का एक सीमित सेट, जिसमें निष्पादन योग्य कोड शामिल हो सकता है (यानी, WWW जावास्क्रिप्ट में)

रीस्टफुल प्रोग्रामिंग के बारे में है:

  • संसाधनों को लगातार पहचानकर्ता द्वारा पहचाना जा रहा है: यूआरआई इन दिनों पहचानकर्ता की सर्वव्यापी पसंद हैं
  • संसाधनों का एक सामान्य सेट का उपयोग करके संसाधनों का उपयोग किया जा रहा है: HTTP विधियां आमतौर पर देखी गई केस हैं - आदरणीय Create , Retrieve , Update , Delete POST , GET , PUT GET और DELETE । लेकिन आरईएसटी HTTP तक सीमित नहीं है, यह अभी अभी सबसे अधिक इस्तेमाल किया जाने वाला परिवहन है।
  • संसाधन के लिए पुनर्प्राप्त वास्तविक प्रतिनिधित्व अनुरोध पर निर्भर है और पहचानकर्ता नहीं है: हेडर को स्वीकार करने के लिए स्वीकार करें कि आप XML, HTTP, या यहां तक ​​कि जावा ऑब्जेक्ट को संसाधन का प्रतिनिधित्व करना चाहते हैं
  • वस्तु में राज्य को बनाए रखना और प्रतिनिधित्व में राज्य का प्रतिनिधित्व करना
  • संसाधन के प्रतिनिधित्व में संसाधनों के बीच संबंधों का प्रतिनिधित्व करना: वस्तुओं के बीच संबंध सीधे प्रतिनिधित्व में एम्बेडेड हैं
  • संसाधन प्रस्तुतिकरण वर्णन करते हैं कि प्रतिनिधित्व का उपयोग कैसे किया जा सकता है और किस परिस्थितियों में इसे निरंतर तरीके से त्याग दिया / दोहराया जाना चाहिए: HTTP कैश-कंट्रोल हेडर का उपयोग

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

यदि आप वास्तव में रुचि रखते हैं कि एक यथार्थ वास्तुकला क्या है और यह क्यों काम करती है, तो अपनी थीसिस को कुछ बार पढ़ें और पूरी बात को केवल अध्याय 5 को न पढ़ें! अगला देखें कि DNS क्यों काम करता है । DNS के पदानुक्रमिक संगठन और रेफ़रल कैसे काम करते हैं, इसके बारे में पढ़ें। फिर पढ़ें और विचार करें कि कैसे DNS कैशिंग काम करता है। अंत में, HTTP विनिर्देशों (विशेष रूप से RFC3040 RFC2616 और RFC3040 ) को RFC3040 और विचार करें कि कैसे और क्यों कैशिंग काम करता है। आखिरकार, यह सिर्फ क्लिक करेगा। मेरे लिए अंतिम प्रकाशन तब हुआ जब मैंने DNS और HTTP के बीच समानता देखी। इसके बाद, समझें कि एसओए और संदेश पासिंग इंटरफेस स्केलेबल क्यों क्लिक करना शुरू कर देते हैं।

मुझे लगता है कि एक यथार्थवादी और साझा कुछ भी आर्किटेक्चर के स्थापत्य महत्व और प्रदर्शन के प्रभाव को समझने की सबसे महत्वपूर्ण चाल प्रौद्योगिकी और कार्यान्वयन के विवरण पर लटका पाने से बचने के लिए है। संसाधनों का मालिक कौन है, इस पर ध्यान केंद्रित करें, जो उन्हें बनाने / बनाए रखने के लिए ज़िम्मेदार है, आदि। फिर प्रस्तुतिकरण, प्रोटोकॉल और प्रौद्योगिकियों के बारे में सोचें।


आरईएसटी क्या है?

आरईएसटी प्रतिनिधि राज्य हस्तांतरण के लिए खड़ा है। (इसे कभी-कभी "रीस्ट" लिखा जाता है।) यह एक स्टेटलेस, क्लाइंट-सर्वर, कैशबल संचार प्रोटोकॉल पर निर्भर करता है - और लगभग सभी मामलों में, HTTP प्रोटोकॉल का उपयोग किया जाता है।

आरईएसटी नेटवर्किंग अनुप्रयोगों को डिजाइन करने के लिए एक वास्तुकला शैली है। विचार यह है कि, मशीनों के बीच कनेक्ट करने के लिए कॉरबा, आरपीसी या एसओएपी जैसी जटिल तंत्रों का उपयोग करने के बजाय, सरल HTTP का उपयोग मशीनों के बीच कॉल करने के लिए किया जाता है।

कई मायनों में, HTTP वाइड वेब स्वयं HTTP पर आधारित है, जिसे आरईएसटी-आधारित आर्किटेक्चर के रूप में देखा जा सकता है। रीस्टफुल एप्लिकेशन एप्लिकेशन (डेटा बनाने और / या अपडेट) पोस्ट करने के लिए HTTP अनुरोधों का उपयोग करते हैं, डेटा पढ़ते हैं (उदाहरण के लिए, क्वेरी बनाते हैं), और डेटा हटाते हैं। इस प्रकार, आरईएसटी सभी चार सीआरयूडी (बनाएँ / पढ़ें / अपडेट / हटाएं) संचालन के लिए HTTP का उपयोग करता है।

आरईएसटी आरपीसी (रिमोट प्रोसेसर कॉल) और वेब सर्विसेज (एसओएपी, डब्ल्यूएसडीएल, एट अल।) जैसे तंत्रों के लिए हल्का विकल्प है। बाद में, हम देखेंगे कि आरईएसटी कितना आसान है।

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

जब मैं आराम के सरल वास्तविक अर्थ को खोजने का प्रयास करता हूं तो मुझे सबसे अच्छा संदर्भ मिला।

http://rest.elkstein.org/


यह प्रोग्रामिंग है जहां आपके सिस्टम की वास्तुकला रॉय फील्डिंग द्वारा अपनी थीसिस में रखी गई ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm फिट बैठती है। चूंकि यह वास्तुशिल्प शैली है जो वेब (अधिक या कम) का वर्णन करती है, इसलिए बहुत से लोग इसमें रूचि रखते हैं।

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


RESTful (प्रतिनिधि राज्य हस्तांतरण) एपीआई प्रोग्रामिंग 5 बुनियादी सॉफ्टवेयर वास्तुकला शैली सिद्धांतों का पालन ​​करके किसी भी प्रोग्रामिंग भाषा में वेब अनुप्रयोग लिख रही है :

  1. संसाधन (डेटा, सूचना)।
  2. अद्वितीय वैश्विक पहचानकर्ता (सभी संसाधन अद्वितीय URI द्वारा पहचाने जाते हैं )।
  3. वर्दी इंटरफ़ेस - सरल और मानक इंटरफ़ेस (HTTP) का उपयोग करें।
  4. प्रतिनिधित्व - सभी संचार प्रतिनिधित्व द्वारा किया जाता है (जैसे XML / JSON )
  5. Stateless (प्रत्येक अनुरोध पूर्ण अलगाव में होता है, कैश और लोड-बैलेंस करना आसान है),

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

रीस्टफुल प्रोग्रामिंग वेब आर्किटेक्चर डिज़ाइन के अनुरूप है और, यदि सही तरीके से लागू किया गया है, तो यह आपको स्केलेबल वेब इंफ्रास्ट्रक्चर का पूर्ण लाभ लेने की अनुमति देता है।


आरईएसटी पर एक महान पुस्तक अभ्यास में आरईएसटी है।

पढ़ना चाहिए ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm और roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

एक विश्वसनीय सेवा क्या है, इस पर एक स्पष्टीकरण के लिए मार्टिन फाउलर्स रिचर्डसन परिपक्वता मॉडल (आरएमएम) लेख देखें।

पुनर्स्थापित करने के लिए एक सेवा को हाइपरमीडिया को आवेदन राज्य के इंजन के रूप में पूरा करने की आवश्यकता है (हेटोआस) , यानी, इसे आरएमएम में स्तर 3 तक पहुंचने की जरूरत है, विवरण के लिए लेख या क्यूकन टॉक से स्लाइड पढ़ें

हैटॉअस बाधा हाइपरमीडिया के लिए आवेदन राज्य के इंजन के रूप में एक संक्षिप्त शब्द है। यह सिद्धांत एक आरईएसटी और क्लाइंट सर्वर सिस्टम के अधिकांश अन्य रूपों के बीच महत्वपूर्ण अंतर है।

...

एक विश्वसनीय एप्लिकेशन के क्लाइंट को केवल इसे एक्सेस करने के लिए एक निश्चित यूआरएल पता होना चाहिए। सभी भविष्य की कार्रवाइयों को उन यूआरएल से लौटाए गए संसाधनों के प्रतिनिधित्व में शामिल हाइपरमीडिया लिंक से गतिशील रूप से खोजा जाना चाहिए। मानकीकृत मीडिया प्रकारों को किसी भी क्लाइंट द्वारा समझा जा सकता है जो एक विश्वसनीय API का उपयोग कर सकता है। (विकिपीडिया, मुक्त विश्वकोश से)

वेब फ्रेमवर्क के लिए आरईएसटी लिटमस टेस्ट वेब ढांचे के लिए एक समान परिपक्वता परीक्षण है।

शुद्ध REST के पास: HATEOAS से प्यार करना सीखना लिंक का एक अच्छा संग्रह है।

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

आरईएसटी और वर्जनिंग संशोधनीयता के माध्यम से एक्स्टेंसिबिलिटी, वर्जनिंग , इवोल्वबिलिटी इत्यादि पर चर्चा करता है


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


मुझे लगता है कि एक स्टेटलेस ट्रांसपोर्ट लेयर के रूप में इंटरनेट (प्रोटोकॉल) का उपयोग करते समय आराम से बिंदु एक उच्च परत में राज्य की स्थिति को अलग करना है । अधिकांश अन्य दृष्टिकोण चीजों को मिलाते हैं।

इंटरनेट युग में प्रोग्रामिंग के मौलिक परिवर्तनों को संभालने के लिए यह सबसे अच्छा व्यावहारिक दृष्टिकोण रहा है। मौलिक परिवर्तनों के बारे में, एरिक मीजर के यहां शो पर एक चर्चा है: http://www.infoq.com/interviews/erik-meijer-programming-language-design-effects-purity#view_93197 । वह इसे पांच प्रभावों के रूप में सारांशित करता है, और एक प्रोग्रामिंग भाषा में समाधान को डिजाइन करके समाधान प्रस्तुत करता है। समाधान, भाषा के बावजूद मंच या सिस्टम स्तर पर भी हासिल किया जा सकता है। शेष को उन समाधानों में से एक के रूप में देखा जा सकता है जो वर्तमान अभ्यास में बहुत सफल रहे हैं।

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

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

बस मेरे 2 सी।

संपादित करें: दो और महत्वपूर्ण पहलू:


प्रति सत्र "रीस्टफुल प्रोग्रामिंग" जैसी कोई धारणा नहीं है। इसे बेहतर प्रतिमान या बेहतर रीस्टफुल आर्किटेक्चर कहा जाएगा। यह एक प्रोग्रामिंग भाषा नहीं है। यह एक प्रतिमान है।

विकिपीडिया से :

कंप्यूटिंग में, प्रतिनिधित्वकारी राज्य हस्तांतरण (आरईएसटी) वेब विकास के लिए उपयोग की जाने वाली एक वास्तुशिल्प शैली है।


आरईएसटी डेटा को कुशल बनाने के लिए विभिन्न HTTP विधियों (मुख्य रूप से GET / PUT / DELETE) का उपयोग कर रहा है।

किसी विधि को हटाने के लिए एक विशिष्ट यूआरएल का उपयोग करने के बजाय (कहें, /user/123/delete ), आप /user/[id] को संपादित करने के लिए उपयोगकर्ता को संपादित करने के लिए /user/[id] यूआरएल को एक डेली अनुरोध भेज देंगे, आपके द्वारा भेजे गए उपयोगकर्ता पर जानकारी पुनर्प्राप्त करने के लिए एक अनुरोध /user/[id]

उदाहरण के लिए, इसके बजाय यूआरएल का एक सेट जो निम्न में से कुछ जैसा दिख सकता है ..

GET /delete_user.x?id=123
GET /user/delete
GET /new_user.x
GET /user/new
GET /user?id=1
GET /user/id/1

आप HTTP "क्रियाएं" का उपयोग करते हैं और ..

GET /user/2
DELETE /user/2
PUT /user

REST === HTTP अनुरूपता तब तक सही नहीं है जब तक आप इस तथ्य पर दबाव नहीं HATEOAS कि यह " HATEOAS संचालित " होना चाहिए ।

रॉय ने खुद इसे roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven मंजूरी दी ।

प्रारंभिक यूआरआई (बुकमार्क) से परे पूर्व ज्ञान के साथ एक आरईएसटी एपीआई दर्ज की जानी चाहिए और इच्छित मीडिया प्रकारों का सेट जो लक्षित दर्शकों के लिए उचित हैं (यानी, किसी भी क्लाइंट द्वारा समझा जा सकता है जो एपीआई का उपयोग कर सकता है)। उस बिंदु से, सभी आवेदन राज्य संक्रमणों को सर्वर द्वारा प्रदान किए गए विकल्पों के क्लाइंट चयन द्वारा संचालित किया जाना चाहिए जो प्राप्त प्रस्तुतियों में मौजूद हैं या उन प्रस्तुतियों के उपयोगकर्ता के हेरफेर द्वारा निहित हैं। संक्रमण को मीडिया प्रकारों और संसाधन संचार तंत्र के क्लाइंट के ज्ञान को निर्धारित (या सीमित) किया जा सकता है, जिनमें से दोनों को उड़ान भरने में सुधार किया जा सकता है (उदाहरण के लिए, कोड-ऑन-डिमांड)।

[यहां विफलता का तात्पर्य है कि ऑफ-ऑफ-बैंड जानकारी हाइपरटेक्स्ट की बजाय बातचीत चला रही है।]





definition