(क्षमा करें, मेरे द्वारा पहली बार / संपादित / / और / / (2) को हटाने से ...)
यूआरआई का विचार यह है कि यह एक विधि मंगलाचरण के बजाय एक पता योग्य संसाधन का एक पहचानकर्ता है । इसलिए यूआरआई को एक विशिष्ट संसाधन की ओर इशारा करना चाहिए। और यदि आप यूआरआई को स्थगित करते हैं, तो आपको हमेशा एक ही संसाधन प्राप्त करना चाहिए।
अर्थात, आपको URI के बारे में उसी तरह से सोचना चाहिए जिस तरह से आप डेटाबेस में किसी पंक्ति की प्राथमिक कुंजी के बारे में सोचते हैं। यह विशिष्ट रूप से किसी चीज़ की पहचान करता है: यूनिवर्सल रिसोर्स आइडेंटिफ़ायर।
तो चाहे आप बहुवचन या एकवचन का उपयोग करें, यूआरआई एक आह्वान के बजाय एक पहचानकर्ता होना चाहिए । क्या आप की कोशिश कर रहे करने के विधि में चला जाता है, अर्थात्: प्राप्त (जीईटी), PUT (बनाने / अद्यतन), हटाएँ (हटाएँ) या पोस्ट (सब कुछ)।
इसलिए "/ आइटम / डिलीट / 123" REST को तोड़ता है क्योंकि यह एक संसाधन की ओर इशारा नहीं करता है, यह एक विधि आह्वान का अधिक है।
(इसके अलावा, सिर्फ शब्दार्थ, आपको एक URI प्राप्त करने में सक्षम होना चाहिए, यह तय करना पुराना है, और फिर उसी URI को DELETE करें - क्योंकि यह एक पहचानकर्ता है। यदि GET URI के पास "/ हटाएँ /" और DELETE नहीं है)। तब वह HTTP शब्दार्थ के विरुद्ध जाता है। आप प्रति संसाधन 2 या अधिक URI को प्रसारित कर रहे हैं जहाँ 1 करेंगे।)
अब, धोखा यह है: कोई वास्तविक स्पष्ट परिभाषा नहीं है कि क्या है और एक संसाधन नहीं है, इसलिए REST में आम चकमा एक "प्रसंस्करण संज्ञा" को परिभाषित करने और उस पर URI को इंगित करने के लिए है। यह एक शब्द का खेल है, लेकिन यह शब्दार्थ को संतुष्ट करता है।
इसलिए यदि, उदाहरण के लिए, आप वास्तव में किसी कारण से इसका उपयोग नहीं कर सकते हैं:
DELETE /items/123
आप दुनिया को "विलोपक" संसाधन संसाधन और उपयोग की घोषणा कर सकते हैं
POST /items/deletor { id: 123 }
अब, यह RPC (दूरस्थ प्रक्रिया कॉल) की तरह दिखता है, लेकिन यह HTTP स्पेसिफिकेशन में नामित POST विनिर्देशन के "डेटा प्रोसेसिंग" क्लॉज के विशाल खामियों से गुजरता है।
हालाँकि, ऐसा करना असाधारण है, और यदि आप बनाने / अपडेट के लिए सामान्य PUT का उपयोग कर सकते हैं, डिलीट के लिए DELETE, और अपेंडेंट के लिए POST, बना सकते हैं, और बाकी सब कुछ, तो आपको चाहिए , क्योंकि यह HTTP का अधिक मानक उपयोग है। लेकिन अगर आपके पास "कमिटेड" या "पब्लिश" या "रीडैक्ट" जैसा कोई ट्रिकी केस है, तो प्रोसेसर संज्ञा का उपयोग करने का मामला REST शुद्धतावादियों को संतुष्ट करता है और फिर भी आपको आपके लिए आवश्यक शब्दार्थ प्रदान करता है।
PUT
औरDELETE
, मैं इसे पथ में जोड़ने का पक्ष लूंगा, इसे क्वेरी स्ट्रिंग के साथ विभेदित नहीं करने का। यह मौजूदा ऑपरेशन के लिए क्वेरी स्ट्रिंग संशोधन नहीं है; यह एक अलग ऑपरेशन है।