मुझे अपनी सादगी के लिए रीस्टफुल पसंद है और यह एसओएपी, या डीसीओएम और आरपीसी की बाइनरी-कठोरता जैसे सामान्य 'एंटरप्राइज़' सिस्टमों के क्रूर से कैसे बचाता है।विश्वसनीय क्रियाएँ/सेवाएं जो किसी इकाई से मेल नहीं खाती हैं?
लेकिन आरईएसटी अधिक अमूर्त सेवाओं की तुलना में डेटाबेस इकाइयों के लिए अधिक उपयुक्त लगता है। मैं सोच रहा था कि क्या आप मुझे सलाह दे सकते हैं कि आप इन परिस्थितियों को कैसे करेंगे:
उदाहरण के लिए, मान लीजिए कि मेरे पास सामान्य डेटाबेस सिस्टम (कहें, एक डेयरी शॉपिंग साइट) के लिए एक शानदार वेब सेवा है, तो मैं चाहता हूं है/उत्पादों/अंडे/बैटरी और/उत्पादों/दूध/स्किम्ड
आईएनएसईआरटी करना/उत्पादों/अंडों को पोस्ट करके हासिल किया जाएगा।
लेकिन आप "सभी को साफ़ करें" आदेश कैसे करेंगे? DELETE क्रिया केवल एकल इकाइयों के लिए उपयुक्त है। और "डिलीट/उत्पाद/दूध" का मतलब दूध श्रेणी के भीतर केवल सभी उत्पादों की बजाय "दूध" उत्पाद श्रेणी को हटाने का तात्पर्य है। और क्या होगा यदि आप दोनों को पूरा करना चाहते हैं?
एक अन्य प्रश्न जो मैंने वेब-सेवा क्रियाओं से संबंधित है जो किसी इकाई से संबंधित नहीं हैं। उदाहरण के लिए, यदि मैं पासवर्ड डेटाबेस के लिए वेब-सेवा डिज़ाइन कर रहा हूं, तो मेरे पास "GET /passwords/stackoverflow.com" जैसे ऑपरेशन होंगे जो ठीक है, लेकिन घुसपैठ के मामले में वेबसाइट को अक्षम करने के लिए मेरे पास ऑपरेशन भी होंगे का पता लगाने। 'पुराने स्कूल' वेब-सेवा मॉडल के तहत मेरे पास "अक्षम वेबसाइट" नामक एक विधि होगी, हालांकि मैं "अक्षम" नामक एक HTTP क्रिया और "/ वेबसाइट" नामक संसाधन नहीं बना सकता (इसलिए अनुरोध " अक्षम/वेबसाइट ")। यहां समाधान क्या है?
अंत में, आप HTML फॉर्म को रीस्टफुल के साथ कैसे मेल खाते हैं? वेब फॉर्म केवल क्वेरीस्ट्रिंग या POST का उपयोग करके अनुरोध प्राप्त कर सकते हैं। अगर मेरे पास एक खोज फ़ॉर्म है, तो मैं इसे "/ products/search/{query}" का अनुरोध करना चाहता हूं लेकिन अभी अनुरोध "/ products/search? Query = {query}" जैसा दिखता है।
शानदार उत्तर! लेकिन 'जीईटी/उत्पाद-श्रेणियों/दूध/हटाने' का उपयोग करना वास्तव में एक अच्छा समाधान नहीं है, क्योंकि जीईटी एक सहेजने की विधि है और "पुनर्प्राप्ति के अलावा कोई कार्रवाई करने का महत्व नहीं होना चाहिए" [लिंक] देखें (http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html)। मैं POST/product-category/milk/deletecategory' जैसे कुछ पोस्ट का उपयोग करने की अनुशंसा करता हूं। इस तरह ट्विटर अपने एपीआई के साथ बहुत सी चीजें संभालता है। – Robert
जीईटी एक फॉर्म पुनर्प्राप्त करना है, वास्तव में हटाने के लिए नहीं। –