सबसे पहले पैसा ट्रांसफर करना ऐसा कुछ भी नहीं है जिसे आप किसी सिंगल रिसोर्स कॉल में नहीं कर सकते। आप जो कार्रवाई करना चाहते हैं वह पैसा भेज रहा है। तो आप भेजने वाले के खाते में एक मनी ट्रांसफर संसाधन जोड़ दें।
POST: accounts/alice, new Transfer {target:"BOB", abmount:100, currency:"CHF"}.
किया हुआ। आपको यह जानने की आवश्यकता नहीं है कि यह एक ऐसा लेनदेन है जो परमाणु होना चाहिए आदि। आप सिर्फ पैसा उर्फ स्थानांतरित करते हैं। A से B तक पैसे भेजें।
लेकिन यहां दुर्लभ मामलों के लिए एक सामान्य समाधान:
यदि आप परिभाषित संदर्भ में कई संसाधनों को शामिल करते हुए कुछ बहुत जटिल करना चाहते हैं, तो बहुत सारे प्रतिबंध हैं जो वास्तव में क्या बनाम क्यों (व्यापार बनाम कार्यान्वयन ज्ञान) को पार करते हैं, आपको राज्य को स्थानांतरित करने की आवश्यकता है। चूंकि REST आपको स्टेटलेस होना चाहिए, क्योंकि क्लाइंट को राज्य को स्थानांतरित करने की आवश्यकता होती है।
यदि आप राज्य को स्थानांतरित करते हैं तो आपको क्लाइंट से अंदर की जानकारी छिपाने की आवश्यकता है। ग्राहक को केवल कार्यान्वयन के लिए आवश्यक आंतरिक जानकारी का पता नहीं होना चाहिए, लेकिन व्यापार के संदर्भ में जानकारी को प्रासंगिक नहीं रखता है। यदि उन सूचनाओं का कोई व्यावसायिक मूल्य नहीं है, तो राज्य को एन्क्रिप्ट किया जाना चाहिए और टोकन, पास या कुछ जैसे रूपक का उपयोग करने की आवश्यकता है।
इस तरह से कोई भी आंतरिक स्थिति को चारों ओर से गुजर सकता है और एन्क्रिप्शन का उपयोग कर सकता है और सिस्टम पर हस्ताक्षर करना अभी भी सुरक्षित और मजबूत हो सकता है। ग्राहक के लिए सही अमूर्तता क्यों वह राज्य की जानकारी के आसपास से गुजरता है कुछ ऐसा है जो डिजाइन और वास्तुकला पर निर्भर है।
वास्तविक समाधान:
याद रखें कि REST HTTP पर बात कर रहा है और HTTP कुकीज़ के उपयोग की अवधारणा के साथ आता है। उन कुकीज़ को अक्सर भुला दिया जाता है जब लोग REST API और वर्कफ़्लो और कई संसाधनों या अनुरोधों को लेकर बातचीत के बारे में बात करते हैं।
याद रखें कि HTTP कुकीज़ के बारे में विकिपीडिया में क्या लिखा है:
वेबसाइटों को स्टेटफ़ुल जानकारी (जैसे कि शॉपिंग कार्ट में आइटम) या उपयोगकर्ता की ब्राउज़िंग गतिविधि (जिसमें विशेष बटन पर क्लिक करना, लॉग इन करना या रिकॉर्डिंग करना शामिल है) को रिकॉर्ड करने के लिए वेबसाइटों के लिए कुकीज़ को एक विश्वसनीय तंत्र के रूप में डिज़ाइन किया गया था। महीने या साल पहले)।
इसलिए मूल रूप से यदि आपको राज्य से गुजरने की आवश्यकता है, तो कुकी का उपयोग करें। यह बिल्कुल उसी कारण के लिए डिज़ाइन किया गया है, यह HTTP है और इसलिए यह डिज़ाइन द्वारा REST के लिए संगत है :)।
बेहतर समाधान:
यदि आप एक क्लाइंट के बारे में बात करते हैं जो एक वर्कफ़्लो करता है जिसमें आप आमतौर पर प्रोटोकॉल के बारे में बात करते हैं। प्रोटोकॉल के हर रूप में प्रत्येक संभावित कदम के लिए पूर्व शर्त का एक सेट के साथ आता है जैसे कि बी करने से पहले चरण ए का प्रदर्शन करें।
यह स्वाभाविक है लेकिन ग्राहकों के लिए प्रोटोकॉल को उजागर करना सब कुछ अधिक जटिल बनाता है। इससे बचने के लिए हमें लगता है कि हम क्या करते हैं जब हमें वास्तविक दुनिया में जटिल बातचीत और चीजों को करना पड़ता है ...। हम एक एजेंट का उपयोग करते हैं।
एजेंट रूपक का उपयोग करके आप एक संसाधन प्रदान कर सकते हैं जो आपके लिए सभी आवश्यक कदमों का प्रदर्शन कर सकता है और इसकी सूची में काम कर रहे वास्तविक असाइनमेंट / निर्देशों को संग्रहीत कर सकता है (इसलिए हम एजेंट या एक 'एजेंसी' पर POST का उपयोग कर सकते हैं)।
एक जटिल उदाहरण:
एक घर खरीदना:
आपको अपनी विश्वसनीयता साबित करने की आवश्यकता है (जैसे कि आपकी पुलिस रिकॉर्ड प्रविष्टियां प्रदान करना), आपको वित्तीय विवरण सुनिश्चित करने की आवश्यकता है, आपको एक वकील का उपयोग करके वास्तविक घर खरीदने की आवश्यकता है और एक विश्वसनीय तीसरे पक्ष द्वारा धनराशि का भंडारण किया जाता है, सत्यापित करें कि घर अब आपका है और अपने कर रिकॉर्ड आदि में खरीदारी का सामान जोड़ें (बस एक उदाहरण के रूप में, कुछ कदम गलत हो सकते हैं या जो भी हो)।
इन चरणों को पूरा होने में कई दिन लग सकते हैं, कुछ समानांतर आदि में किए जा सकते हैं।
ऐसा करने के लिए, आप एजेंट को घर खरीदने का काम देते हैं जैसे:
POST: agency.com/ { task: "buy house", target:"link:toHouse", credibilities:"IamMe"}.
किया हुआ। एजेंसी आपको एक संदर्भ वापस भेजती है जिसका उपयोग आप इस नौकरी की स्थिति को देखने और ट्रैक करने के लिए कर सकते हैं और बाकी एजेंसी के एजेंटों द्वारा स्वचालित रूप से किया जाता है।
उदाहरण के लिए बग ट्रैकर के बारे में सोचें। मूल रूप से आप बग की रिपोर्ट करते हैं और व्हाट्स आइडी को जांचने के लिए बग आईडी का उपयोग कर सकते हैं। आप इस संसाधन के परिवर्तनों को सुनने के लिए किसी सेवा का उपयोग भी कर सकते हैं। मिशन पूरा हुआ।