2013-08-28 4 views
7

मैं यह तय करने की कोशिश कर रहा हूं कि कौन सी एचटीपी विधि का उपयोग किया जाना चाहिए PUT या POST।रीस्टफुल वेब सेवा में PUT विधि idempotent का क्या अर्थ है?

स्टैक ओवरव्लो पर कुछ पोस्ट देखने पर मैं this पोस्ट देख सकता था।

पोस्ट में जवाब में से एक का कहना है

PUT idempotent है, इसलिए यदि आप एक वस्तु दो बार डाल, यह कोई प्रभाव नहीं है। यह एक अच्छी संपत्ति है, इसलिए जब संभव हो तो मैं PUT का उपयोग करूंगा।

क्या कोई यहां मुझे उदाहरण के साथ मदद कर सकता है। आइए कहें कि मेरे पास एक परिदृश्य है जहां मैं एक छात्र बनाने की कोशिश कर रहा हूं जिसका प्रवेश आरडीबीएमएस में छात्र तालिका में पारित किया जाएगा।

तो अगर मैं बार-बार उस प्रविष्टि को पुट करने का प्रयास करता हूं तो इसका कोई प्रभाव नहीं पड़ेगा?

उत्तर

7

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

इसके विपरीत, एक पोस्ट, idempotent नहीं है - आप केवल मूल्यों का सबसेट पोस्ट करते हैं। इसलिए यदि आप आज POST को कॉल करते हैं, तो एक सप्ताह प्रतीक्षा करें, और एक ही पोस्ट कॉल फिर से करें, आपको नहीं पता कि संसाधन की स्थिति क्या है - किसी ने उस मूल्य को बदल दिया होगा जिसे आप पोस्ट में सेट नहीं कर रहे हैं।

बेवकूफ का मतलब है कि कोई फर्क नहीं पड़ता कि आप कब या कितनी बार कॉल करते हैं, संसाधन की अंतिम स्थिति बिल्कुल वही है।

डिलीट और जीईटी भी बेवकूफ हैं।

+0

एक चीज जिसे मैं समझ नहीं पा रहा हूं वह है एचटीपी सर्वर द्वारा बेवकूफता प्राप्त की जाती है? मैं पुट और पोस्ट के साथ एक समझदार बनाने की कोशिश कर सकते हैं। तो छात्र बनाते समय मेरी सेवा विधि छात्र को पुट या पोस्ट अनुरोध के रूप में कई बार बना सकती है। – Sam

+1

@ सैम आप सुनिश्चित करेंगे कि सर्वर पर आपका कोड PUTs के लिए idempotence प्रॉपर्टी को लागू कर रहा है। मैं तुम्हारी आखिरी वाक्य नहीं समझता। यहां idempotence पर और अधिक है: http://stackoverflow.com/questions/7016785/is-put-delete-idempotent-with-rest-automatic –

+1

आपका मतलब है कि मुझे यह सुनिश्चित करना है कि मुझे आश्रय सुनिश्चित किया जाए। फिर उस तरह पुट या पोस्ट केवल शब्दावली होगी। मैं 3 बार पुट के माध्यम से एक छात्र बनाने की कोशिश करूंगा और जैसा कि मैं पोस्ट के साथ करता हूं। तो क्या पेंट के साथ यह छात्र 3 बार बनायेगा? यही मेरी आखिरी वाक्य से है। – Sam

संबंधित मुद्दे