.net HTTP विधियों के बीच अंतर क्या है, पोस्ट करें, पुट करें और हटाएं




wcf web-services (3)

चूंकि HTTP GET विधि को idempotent के रूप में निर्दिष्ट किया गया है, विनिर्देशन द्वारा एक GET अनुरोध, इस धारणा से पुनः सबमिट किया जा सकता है कि यह सर्वर पर कुछ भी नहीं बदलेगा। यह एक HTTP पोस्ट के लिए मामला नहीं है जो विनिर्देशन द्वारा सर्वर पर चल रहे अनुप्रयोग की स्थिति को बदल सकता है।

इसलिए, विनिर्देशन के अनुसार, कोई व्यक्ति अपनी स्थिति बदलने की चिंता किए बिना किसी पृष्ठ के विरुद्ध HTTP GET निष्पादित कर सकता है।

विनिर्देशन का सम्मान करने से कई अवांछित परिणाम हो सकते हैं। उदाहरण के लिए, वेब क्रॉलर साइट को इंडेक्स करने के लिए जीईटी अनुरोध के माध्यम से पालन करते हैं, लेकिन पोस्ट नहीं करते हैं। यदि आपने HTTP GET डेटाबेस को डेटाबेस में परिवर्तन करने की अनुमति दी है, तो आप आसानी से अवांछित निहितार्थ को समझ सकते हैं।

एक विनिर्देश का सम्मान करना आपकी सेवा या वेबसाइट और विभिन्न उपभोक्ताओं की एक श्रृंखला के बीच एक समझौते का सम्मान करना है जो सामान्य उपयोगकर्ताओं के ब्राउज़र हो सकते हैं लेकिन वेब क्रॉलर जैसी अन्य सेवाएं भी हो सकते हैं।

आप एक ऐसी साइट तैयार कर सकते हैं जो एक रिकॉर्ड डालने के लिए जीईटी का उपयोग करता है, लेकिन आपको यह भी उम्मीद करनी चाहिए कि जो कुछ भी आपकी साइट का उपभोग करने के लिए बनाया गया है, वह इस धारणा के साथ काम कर रहा है कि आप समझौते का सम्मान कर रहे हैं।

एक आखिरी उदाहरण के रूप में, वेब ब्राउज़र उपयोगकर्ताओं को चेतावनी देते हैं जब वे किसी ऐसे पृष्ठ को रीफ्रेश करने का प्रयास करते हैं जो HTTP POST अनुरोध चेतावनी से पहुंचा था कि कुछ डेटा पुनः सबमिट किया जा सकता है। यदि HTTP HTTP अनुरोध द्वारा पृष्ठ तक पहुंचा जाता है तो आपको ब्राउज़र में अंतर्निहित सुरक्षा की परत नहीं मिलती है।

आप यहां और पढ़ सकते हैं: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

मैं आरईएसटी डब्ल्यूसीएफ सेवा विकसित कर रहा हूं और सैद्धांतिक रूप से मुझे पता है कि किस उद्देश्य का चयन करना है।

  • संसाधन GET करने के लिए प्राप्त करें
  • अद्यतन करने के लिए PUT
  • सम्मिलित करने के लिए POST करें
  • DELETE लिए हटा दें

लेकिन अगर हम इस उपर्युक्त नियम का पालन नहीं करते हैं तो नुकसान क्या है, मान लीजिए कि मैंने GET विधि का उपयोग किया है?


मुझे एक स्थिति का सामना करना पड़ा, मुझे जीईटी के बजाय पुट का इस्तेमाल करना चाहिए था। मेरे पास एक तृतीय पक्ष में जाने की अनुमति प्रविष्टि कॉल थी (यह Google था)। मैं अपने सर्वलेट को अद्यतन अनुमति कॉल के लिए एक अजाक्स जीईटी अनुरोध स्पिन करता हूं और उनकी कॉल से बाहरी सेवा में जाता है। बाहरी सेवा ने अनुरोध को पूरा करने के लिए काफी समय लगाया। इस बीच में मैं अपने सर्वर लॉग में एक ही अनुमति कॉल के दोहराव देख रहा था। यह ब्राउज़र था जो सर्वर को फोन करने के लिए कहता रहता है कि आप क्या कर रहे हैं? चूंकि यह एक जीईटी है और ब्राउज़र सर्वर को जितनी बार संभव हो सके कॉल कर सकता है। ब्राउज़र मानक का पालन किया और मेरा कोड नहीं था। मुझे मानक का पालन न करने का मुद्दा था।


लेकिन अगर हम इस उपरोक्त नियम का पालन नहीं करते हैं तो नुकसान क्या है, मान लीजिए कि मैंने जीईटी विधि का उपयोग किया है।

खोज इंजन जीईटी अनुरोधों का उपयोग करके अपने पृष्ठों तक पहुंचते हैं, इसलिए यदि आपने ऐसा किया है, तो Google का क्रॉलर उन रिकॉर्ड्स को सम्मिलित कर सकता है जिन्हें आप नहीं चाहते थे।

प्रायः, अनुरोध के शरीर में वास्तविक कार्रवाई के साथ लोग किसी भी प्रकार के AJAX अनुरोध के लिए POST का उपयोग करेंगे। इसमें कुछ भी गलत नहीं है, लेकिन सुविधा आपके लिए उपयोग करने के लिए है, इसलिए आप इसका भी उपयोग कर सकते हैं।





http-method