इस विषय पर नए पाठकों को अंतहीन चर्चा से रूबरू होना चाहिए कि आपको क्या करना चाहिए , और अनुभव से सबक की अनुपस्थिति। तथ्य यह है कि RAP SOAP पर "पसंदीदा" है, मुझे लगता है, अनुभव से एक उच्च-स्तरीय शिक्षा है, लेकिन अच्छाई हमें वहां से आगे बढ़नी चाहिए? यह 2016 है। रॉय का शोध प्रबंध 2000 में था। हमने क्या विकास किया है? मज़ा अाया? क्या इसके साथ एकीकृत करना आसान था? समर्थन के लिए? क्या यह स्मार्टफोन के उठने और मोबाइल कनेक्शन को भड़काने से निपटेगा?
एमई के अनुसार, वास्तविक जीवन के नेटवर्क अविश्वसनीय हैं। अनुरोध टाइमआउट। कनेक्शन रीसेट हो गए हैं। नेटवर्क एक समय में घंटों या दिनों के लिए नीचे जाते हैं। ट्रेनें मोबाइल उपयोगकर्ताओं के साथ सुरंगों में जाती हैं। किसी भी अनुरोध के लिए (जैसा कि कभी-कभी इस सभी चर्चा में माना जाता है) अनुरोध पानी के रास्ते में गिर सकता है, या प्रतिक्रिया पानी के रास्ते में वापस आ सकती है। इन स्थितियों में, PUT, POST और DELETE अनुरोधों को जारी करते हुए सीधे तौर पर मूल संसाधनों के विरुद्ध मुझे हमेशा थोड़ा क्रूर और भोला-भाला कहा जाता है।
HTTP अनुरोध-प्रतिक्रिया के विश्वसनीय समापन को सुनिश्चित करने के लिए कुछ भी नहीं करता है, और यह ठीक है क्योंकि यह नेटवर्क-जागरूक अनुप्रयोगों का ठीक से काम है। इस तरह के एक अनुप्रयोग का विकास करना, आप POST के बजाय PUT का उपयोग करने के लिए हुप्स के माध्यम से कूद सकते हैं, फिर डुप्लिकेट अनुरोधों का पता लगाने पर सर्वर पर एक निश्चित प्रकार की त्रुटि देने के लिए अधिक हुप्स। क्लाइंट पर वापस, आपको फिर इन त्रुटियों की व्याख्या करने के लिए हुप्स के माध्यम से कूदना होगा, फिर से भरना, अमान्य और रीपोस्ट करना होगा।
या आप ऐसा कर सकते हैं : अपने असुरक्षित अनुरोधों को अल्पकालिक एकल-उपयोगकर्ता संसाधनों के रूप में मानें (चलो उन्हें कार्रवाई कहते हैं)। ग्राहक खाली POST के साथ एक संसाधन पर एक नए "एक्शन" का अनुरोध करते हैं। इसके लिए POST का ही इस्तेमाल किया जाएगा। एक बार सुरक्षित रूप से ताजा खनन कार्रवाई के यूआरआई के कब्जे में होने के बाद, ग्राहक कार्रवाई यूआरआई को असुरक्षित अनुरोध देता है, न कि लक्ष्य संसाधन । कार्रवाई को हल करना और "वास्तविक" संसाधन को अपडेट करना ठीक से आपके एपीआई का काम है, और यहां अविश्वसनीय नेटवर्क से डिकॉउन्ड किया गया है।
सर्वर व्यवसाय करता है, प्रतिक्रिया देता है और सहमत कार्रवाई URI के खिलाफ संग्रहीत करता है । यदि कुछ भी गलत होता है, तो क्लाइंट अनुरोध (प्राकृतिक व्यवहार) दोहराता है, और यदि सर्वर ने पहले ही देख लिया है, तो यह संग्रहीत प्रतिक्रिया को दोहराता है और कुछ नहीं करता है ।
आप जल्दी से वादों के साथ समानता लाएंगे: हम कुछ भी करने से पहले परिणाम के लिए प्लेसहोल्डर बनाते हैं और वापस करते हैं। एक वादे की तरह, एक क्रिया एक बार सफल या विफल हो सकती है, लेकिन इसका परिणाम बार-बार प्राप्त हो सकता है।
सबसे अच्छी बात यह है कि हम आवेदन भेजने और प्राप्त करने के लिए अपने संबंधित वातावरण में विशिष्ट पहचान की कार्रवाई को विशिष्टता से जोड़ने का मौका देते हैं। और हम मांग करना शुरू कर सकते हैं, और लागू कर सकते हैं !, ग्राहकों से जिम्मेदार व्यवहार: अपने अनुरोधों को जितना चाहें उतना दोहराएं, लेकिन जब तक आप मौजूदा से एक निश्चित परिणाम के कब्जे में न हों, तब तक एक नई कार्रवाई उत्पन्न न करें।
जैसे, कई कांटेदार समस्याएं दूर हो जाती हैं। बार-बार डालने के अनुरोध डुप्लिकेट नहीं बनाएंगे, और जब तक हम डेटा के कब्जे में नहीं होते तब तक हम वास्तविक संसाधन नहीं बनाते हैं। (डेटाबेस कॉलम शून्य नहीं रह सकते हैं)। बार-बार अद्यतन अनुरोध असंगत राज्यों को नहीं मारेंगे और बाद के परिवर्तनों को अधिलेखित नहीं करेंगे। ग्राहक जो भी कारण (ग्राहक दुर्घटनाग्रस्त हो गया, प्रतिक्रिया गायब हो गई, आदि) के लिए मूल पुष्टिकरण और पुन: प्राप्त कर सकते हैं।
404 त्रुटि से टकराने के बिना, मूल हटाए गए अनुरोधों को मूल पुष्टि देख और संसाधित कर सकते हैं। यदि चीजें अपेक्षा से अधिक समय लेती हैं, तो हम अनंतिम रूप से प्रतिक्रिया दे सकते हैं, और हमारे पास एक जगह है जहां ग्राहक निश्चित परिणाम के लिए वापस जांच कर सकता है। इस पैटर्न का सबसे अच्छा हिस्सा इसकी कुंग-फू (पांडा) संपत्ति है। हम एक कमजोरी लेते हैं, ग्राहकों के लिए किसी भी अनुरोध को दोहराने के लिए किसी भी समय वे प्रतिक्रिया को नहीं समझते हैं, और इसे एक ताकत में बदल देते हैं :-)
यह बताने से पहले कि यह RESTful नहीं है, कृपया REST सिद्धांतों का सम्मान करने के कई तरीकों पर विचार करें। ग्राहक URL का निर्माण नहीं करते हैं। एपीआई खोज योग्य रहता है, यद्यपि शब्दार्थ में थोड़ा परिवर्तन होता है। HTTP क्रियाओं का उचित उपयोग किया जाता है। अगर आपको लगता है कि यह लागू करने के लिए एक बड़ा बदलाव है, तो मैं आपको अनुभव से बता सकता हूं कि यह नहीं है।
यदि आपको लगता है कि आपके पास स्टोर करने के लिए भारी मात्रा में डेटा होगा, तो आइए वॉल्यूम पर बात करते हैं: एक विशिष्ट अपडेट की पुष्टि एक किलोबाइट का एक अंश है। HTTP वर्तमान में निश्चित रूप से प्रतिक्रिया देने के लिए आपको एक या दो मिनट देता है। यहां तक कि अगर आप केवल एक सप्ताह के लिए कार्रवाई करते हैं, तो ग्राहकों को पकड़ने का पर्याप्त मौका है। यदि आपके पास बहुत अधिक मात्रा है, तो आप एक समर्पित एसिड-कंप्लेंट कुंजी मान स्टोर, या इन-मेमोरी समाधान चाह सकते हैं।