2010-10-14 15 views
16

CouchDB में, एक नया दस्तावेज़ बनाने के लिए आप भेजने:HTTP क्रिया PUT को अद्यतन करने और सामग्री बनाने के लिए उपयोग नहीं किया गया है?

PUT /albums/70b50bfa0a4b3aed1f8aff9e92dc16a0 

डेटा को अद्यतन करने के लिए इस्तेमाल नहीं डाल रहा है और इसे बनाने नहीं?

उत्तर

14

मेरे लिए PUT के लिए मुख्य शब्द हमेशा idempotent है। POST के लिए आप सिस्टम-स्टेटस में हमेशा "एक और जोड़ना" आइटम रखते हैं, PUT के साथ कार्रवाई कई बार होती है, भले ही कई बार प्रदर्शन किया जाता है (क्योंकि आप किसी आइटम को संबोधित कर रहे हैं)।

उदाहरण:

कर 100-बार पोस्ट/एल्बम = आप 100 विभिन्न एलबम (लेकिन एक ही सामग्री के साथ)

कर 100-बार/एल्बम/123 डाल के साथ खत्म होगा = आप अंत होगा , अद्यतन और को - आईडी 123 (सामग्री के साथ) के साथ एक एकल एलबम के साथ

+1

POST को कुछ भी जोड़ने की आवश्यकता नहीं है। –

+0

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

18

इसका उपयोग दोनों के लिए किया जाता है। Quoth the RFC:

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

+0

तो, दूसरे शब्दों में, सम्मिलित नहीं मौजूद रहने पर। – Jnr

1

PUT वास्तव में सामग्री को अपडेट करने के लिए उपयोग किया जाता है, लेकिन यदि आपके पास पहले से कोई आईडी है, तो आप अपडेट कर रहे हैं। आम तौर पर आरईएसटी में, आप POST से /albums (या जो भी) एक अज्ञात आईडी के साथ एक नया रिकॉर्ड बनाने के लिए करेंगे। चूंकि आपके पास एक आईडी है, इसलिए आप उस आईडी के साथ खाली दस्तावेज़ को उस सामग्री पर अपडेट कर रहे हैं जो आप प्रदान कर रहे हैं।

1

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

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