मैंने एक संग्रह के एक थोक प्रतिस्थापन के लिए अनुमति दी है, जैसे PUT ~/people/123/shoes
जहां शरीर पूरे संग्रह का प्रतिनिधित्व करता है।
यह उन आइटमों के छोटे बच्चे के संग्रह के लिए काम करता है, जहाँ ग्राहक किसी आइटम की समीक्षा करना चाहते हैं और कुछ को प्री-आउट करते हैं और कुछ अन्य को जोड़ते हैं और फिर सर्वर को अपडेट करते हैं। वे सभी को हटाने के लिए एक खाली संग्रह PUT कर सकते थे।
इसका मतलब यह होगा कि GET ~/people/123/shoes/9
अभी भी कैश में रहेगा, लेकिन एक PUT ने इसे हटा दिया, लेकिन यह सिर्फ एक कैशिंग मुद्दा है और अगर किसी अन्य व्यक्ति ने जूता हटा दिया तो यह एक समस्या होगी।
मेरे डेटा / सिस्टम API हमेशा एक्सपायरी समय के विपरीत ETags का उपयोग करते हैं ताकि सर्वर प्रत्येक अनुरोध पर हिट हो, और मुझे डेटा को म्यूट करने के लिए सही संस्करण / संगामिति हेडर की आवश्यकता होती है। एपीआई जो केवल-पढ़ने के लिए और दृश्य / रिपोर्ट संरेखित हैं, के लिए मैं मूल पर हिट को कम करने के लिए समाप्ति समय का उपयोग करता हूं, जैसे कि एक लीडरबोर्ड 10 मिनट के लिए अच्छा हो सकता है।
बहुत बड़े संग्रह के लिए, जैसे ~/people
, मुझे कई हटाने की आवश्यकता नहीं है, उपयोग-मामला स्वाभाविक रूप से उत्पन्न नहीं होता है और इसलिए एकल DELETE ठीक काम करता है।
भविष्य में, और REST एपीआई के निर्माण के साथ अनुभव से और ऑडिट की तरह ही मुद्दों और आवश्यकताओं को मारते हुए, मैं केवल GET और POST क्रियाओं का उपयोग करना और घटनाओं के आसपास डिजाइन करना चाहूंगा, उदाहरण के लिए POST पता बदलने की घटना, हालांकि मुझे संदेह है समस्याओं का अपना सेट के साथ आ जाएगा :)
मैं अपने स्वयं के एपीआई का निर्माण करने की अनुमति देता हूं, जो अक्सर बैक-एंड एपीआई का उपभोग करते हैं क्योंकि अक्सर व्यावहारिक, वैध ग्राहक-पक्ष कारण होते हैं कि वे सख्त "फील्डिंग ज़ीलॉट" रीस्ट एपीआई डिज़ाइन पसंद नहीं करते हैं, और उत्पादकता के लिए और कैश लेयरिंग कारण।