ठीक है, मैं पहले से ही कागज पर सभी कारणों कारण है कि मैं उपयोग नहीं करना चाहिए पता है एक HTTP GET जब सर्वर पर कुछ की स्थिति को अद्यतन करने के एक RESTful कॉल कर। इस प्रकार हर बार संभावित रूप से अलग डेटा लौट रहा है। और मुझे पता है इस कारण 'कागज पर' निम्नलिखित के लिए गलत है:एक विश्वसनीय कॉल में सर्वर पर राज्य को अद्यतन करने के लिए HTTP GET का उपयोग क्यों गलत है?
- HTTP GET कॉल
- एन idempotent किया जाना चाहिए> 0 कॉल हमेशा एक ही डेटा वापस
- का उल्लंघन HTTP कल्पना मिलना चाहिए
- HTTP GET कॉल आमतौर पर केवल पढ़ने के लिए
और मुझे यकीन है कि और भी कारण हैं। लेकिन मुझे "ठीक है, जो HTTP स्पेक का उल्लंघन करता है" के अलावा औचित्य के लिए एक ठोस सरल उदाहरण की आवश्यकता है। ... या कम से कम मैं एक के लिए उम्मीद कर रहा हूँ। मैं भी पहले से ही जिसके बाद सूची की तर्ज ऊपर के साथ और अधिक कर रहे हैं पढ़ा है: Does it violate the RESTful when I write stuff to the server on a GET call? & HTTP POST with URL query parameters -- good idea or not?
उदाहरण के लिए, किसी को ऊपर सही साबित कर सकते हैं और क्यों यह गलत/खराब व्यवहार का/गलत उपयोग करने के लिए एक HTTP GET है कहते हैं निम्नलिखित RESTful कॉल
"MyRESTService/GetCurrentRecords?UpdateRecordID=5&AddToTotalAmount=10"
साथ मैं जानता हूँ कि यह गलत है, लेकिन उम्मीद है कि यह मदद मिलेगी अपने मूल सवाल का जवाब देने के लिए एक उदाहरण प्रदान करते हैं। तो उपरोक्त AddToTotalAmount = 10 के साथ recordID = 5 अपडेट करेगा और फिर अद्यतन रिकॉर्ड लौटाएगा। मुझे पता है कि एक पोस्ट का उपयोग किया जाना चाहिए, लेकिन मान लें कि मैंने एक जीईटी का उपयोग किया है।
कैसे बिल्कुल और मेरे प्रश्न का उत्तर देने के लिए या यह वास्तविक समस्या का कारण बन सकता है? उपरोक्त बुलेट सूची के सभी उल्लंघनों के अलावा, उपरोक्त करने के लिए HTTP GET का उपयोग कैसे कर सकते हैं कुछ वास्तविक समस्या? कई बार मैं एक ऐसे परिदृश्य में आ जाता हूं जहां मैं चीजों को औचित्य दे सकता हूं "क्योंकि डॉक्टर ने ऐसा कहा था", लेकिन मुझे इस पर औचित्य और बेहतर समझ की आवश्यकता है।
धन्यवाद!
यदि आप इस तथ्य के साथ ठीक हैं कि आपकी अद्यतन क्वेरी किसी भी समय (कैश क्वेरी, बॉट इत्यादि) को फिर से निकाल दी जा सकती है, तो वास्तविक समस्याएं नहीं होती हैं। मेरा निष्कर्ष यह है कि यदि मेरी टीम का एक लड़का, समस्या को जानना क्योंकि वह आपके द्वारा लिंक किए गए SO प्रश्नों को पढ़ता है, तो अद्यतन क्वेरी के लिए GET का उपयोग करता है, तो मुझे एक अनुशासनात्मक कार्रवाई पर विचार करना चाहिए। –
अगर आप किसी तीसरे पक्ष एपीआई में GetSomething (id, value) नामक विधि लिखते हैं तो आपको क्या कहना होगा और आपको इसका उपयोग करना होगा? –
यह पूछने की तरह थोड़ा सा है कि "GetSomeResource" नामक फ़ंक्शन वास्तव में संसाधन सेट नहीं कर सकता है। तकनीकी रूप से, आप इसे कर सकते हैं लेकिन फिर एपीआई को बनाए रखने और किसी भी व्यक्ति को शुभकामनाएं देने के लिए शुभकामनाएं। –