क्या यह निर्धारित करने का एक शानदार तरीका है कि कोई पोस्ट (या कोई अन्य गैर-बेवकूफ क्रिया) सफल होगा या नहीं? यह उन मामलों में उपयोगी प्रतीत होता है जहां आपको अनिवार्य रूप से विभिन्न सेवाओं के खिलाफ कई बेवकूफ अनुरोध करने की आवश्यकता होती है, जिनमें से कोई भी असफल हो सकता है। यह अच्छा होगा अगर इन अनुरोधों को "लेनदेन" (यानी रोलबैक के लिए समर्थन के साथ) में किया जा सकता है, लेकिन चूंकि यह असंभव है, तो यह जांचना है कि प्रत्येक अनुरोध वास्तव में उन्हें करने से पहले सफल होगा या नहीं।क्या यह निर्धारित करने का एक शानदार तरीका है कि कोई पोस्ट सफल होगा या नहीं?
उदाहरण के लिए मान लीजिए कि मैं एक ईकॉमर्स सिस्टम बना रहा हूं जो लोगों को उन पर मुद्रित कस्टम टेक्स्ट के साथ टी-शर्ट खरीदने की अनुमति देता है, और इस प्रणाली को दो अलग-अलग सेवाओं के साथ एकीकृत करने की आवश्यकता है: एक टी-शर्ट प्रिंटिंग सेवा, और एक भुगतान सेवा । इनमें से प्रत्येक में एक विश्वसनीय API है, और या तो असफल हो सकता है। (उदाहरण के लिए प्रिंटिंग कंपनी टी-शर्ट पर कुछ शब्दों को मुद्रित करने से इनकार कर सकती है, और क्रेडिट कार्ड की समयसीमा समाप्त होने पर बैंक शिकायत कर सकता है।) क्या इन दो अनुरोधों को अनुमानित रूप से करने का कोई तरीका है, इसलिए मेरा सिस्टम केवल आगे बढ़ेगा अगर दोनों अनुरोध मान्य दिखाई देते हैं?
यदि नहीं, तो क्या इस समस्या को अलग तरीके से हल किया जा सकता है? POST
के माध्यम से status = pending
के साथ संसाधन बनाना, और इसे सभी status = complete
पर बदलना यदि सभी अनुरोध सफल होते हैं? (DELETE
अधिक मुश्किल है ...)
एक और दृष्टिकोण: 'persist = false' या 'ephemeral = true' के साथ' POST'। (थोड़ा हैकी लगता है, लेकिन बाद के 'स्थिति' परिवर्तन की आवश्यकता नहीं है - जब आप वास्तव में 'POST' होना चाहते हैं, तो इसे फिर से जारी करें।) – mjs