http पोस्ट और जीईटी के बीच क्या अंतर है?




post get (7)

इस प्रश्न का उत्तर यहां दिया गया है:

मैं हाल ही में PHP / AJAX / jQuery के साथ शामिल हो रहा हूं और ऐसा लगता है कि इन प्रौद्योगिकियों का एक महत्वपूर्ण हिस्सा POST और GET

सबसे पहले, POST और GET बीच क्या अंतर है? प्रयोग के माध्यम से, मुझे पता है कि GET वापस लौटने वाले चर और उनके मान URL स्ट्रिंग में जोड़ता है

website.com/directory/index.php?name=YourName&bday=YourBday

लेकिन POST नहीं करता है।

तो, क्या यह एकमात्र अंतर है या क्या एक या दूसरे का उपयोग करने के लिए विशिष्ट नियम या सम्मेलन हैं?

दूसरा, मैंने POST भी देखा है और PHP के बाहर GET : AJAX और jQuery में भी। इन 3 के बीच POST और GET कैसे भिन्न होते हैं? क्या वे एक ही विचार हैं, वही कार्यक्षमता, बस अलग-अलग उपयोग करते हैं?


जबकि मतभेदों का विवरण नहीं है, नीचे सही विधि चुनने के बारे में सोचने के लिए कुछ चीजें हैं।

  • अनुरोध प्राप्त करें ब्राउज़र द्वारा कैश किया जा सकता है जो AJAX का उपयोग करते समय एक समस्या (या लाभ) हो सकता है।
  • अनुरोध प्राप्त करें उपयोगकर्ताओं को पैरामीटर का पर्दाफाश करें (POST भी करता है लेकिन वे कम दिखाई दे रहे हैं)।
  • पोस्ट सर्वर पर अधिक जानकारी पास कर सकता है और लगभग किसी भी लंबाई का हो सकता है।

यदि आप वास्तव में काम कर रहे हैं, तो उन अनुरोधों के लिए उपयोग किया जाना चाहिए जहां आप केवल डेटा प्राप्त कर रहे हैं, और POST उन अनुरोधों के लिए उपयोग किया जाना चाहिए जहां आप कुछ कर रहे हैं।

कुछ उदाहरण:

  • एक विशेष SO प्रश्न दिखाते हुए पृष्ठ प्राप्त करें

  • अपनी टिप्पणी डालें

  • "कार्ट में जोड़ें" बटन पर क्लिक करके एक POST अनुरोध भेजें।


GET और POST दो अलग-अलग प्रकार के HTTP अनुरोध हैं।

Wikipedia मुताबिक:

निर्दिष्ट संसाधन के प्रतिनिधित्व का अनुरोध करें । ध्यान दें कि जीईटी को उन परिचालनों के लिए उपयोग नहीं किया जाना चाहिए जो दुष्प्रभावों का कारण बनते हैं, जैसे कि वेब अनुप्रयोगों में कार्रवाई करने के लिए इसका उपयोग करना। इसका एक कारण यह है कि जीईटी को रोबोट या क्रॉलर्स द्वारा मनमाने ढंग से इस्तेमाल किया जा सकता है, जिसे किसी दुष्प्रभाव के दुष्प्रभावों पर विचार करने की आवश्यकता नहीं है।

तथा

पोस्ट संसाधित होने के लिए डेटा प्रस्तुत करता है (उदाहरण के लिए, एक HTML फॉर्म से) पहचान संसाधन में। डेटा अनुरोध के शरीर में शामिल है। इसका परिणाम नए संसाधन या मौजूदा संसाधनों के अपडेट या दोनों के निर्माण में हो सकता है।

इसलिए अनिवार्य रूप से दूरस्थ डेटा पुनर्प्राप्त करने के लिए GET का उपयोग किया जाता है, और दूरस्थ डेटा को सम्मिलित / अद्यतन करने के लिए POST का उपयोग किया जाता है।

HTTP / 1.1 विनिर्देश (आरएफसी 2616) सेक्शन 9 विधि परिभाषाओं में यदि आप रुचि रखते हैं तो GET और POST साथ-साथ अन्य HTTP विधियों पर अधिक जानकारी होती है।

प्रत्येक विधि के इच्छित उपयोगों को समझाने के अलावा, स्पेक कम से कम एक व्यावहारिक कारण भी प्रदान करता है कि डेटा को पुनर्प्राप्त करने के लिए केवल GET उपयोग क्यों किया जाना चाहिए:

HTTP प्रोटोकॉल का उपयोग करने वाली सेवाओं के लेखकों को संवेदनशील डेटा जमा करने के लिए जीईटी आधारित फॉर्मों का उपयोग नहीं करना चाहिए, क्योंकि इससे अनुरोध-यूआरआई में इस डेटा को एन्कोड किया जाएगा। कई मौजूदा सर्वर, प्रॉक्सी और उपयोगकर्ता एजेंट कुछ जगह पर यूआरआई अनुरोध लॉग करेंगे जहां यह तीसरे पक्ष के लिए दृश्यमान हो सकता है। सर्वर इसके बजाय पोस्ट-आधारित फॉर्म सबमिशन का उपयोग कर सकते हैं

अंत में, AJAX अनुरोधों के लिए GET का उपयोग करते समय एक महत्वपूर्ण विचार यह है कि कुछ ब्राउज़र - विशेष रूप से IE - एक GET अनुरोध के परिणाम कैश करेगा। इसलिए यदि आप, उदाहरण के लिए, एक ही GET अनुरोध का उपयोग करके मतदान करते हैं तो आप हमेशा एक ही परिणाम वापस प्राप्त करेंगे, भले ही आप जिस डेटा से पूछ रहे हैं उसे सर्वर-साइड अपडेट किया जा रहा है। इस समस्या को कम करने का एक तरीका यह है कि एक टाइमस्टैंप जोड़कर प्रत्येक अनुरोध के लिए यूआरएल अद्वितीय बनाएं।


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


पोस्ट और जीईटी दो HTTP अनुरोध विधियां हैं । जीईटी आमतौर पर कुछ डेटा पुनर्प्राप्त करने का इरादा रखता है, और यह बेवकूफ होने की उम्मीद है (क्वेरी को दोहराने से कोई साइड इफेक्ट नहीं होता है) और सर्वर पर सीमित मात्रा में पैरामीटर डेटा भेज सकता है। यदि आप सावधान नहीं हैं तो GET अनुरोधों को अक्सर कुछ ब्राउज़रों द्वारा कैश किया जाता है।

POST सर्वर स्थिति बदलने के लिए है। इसमें अधिक डेटा होता है, और क्वेरी को दोहराने की अनुमति दी जाती है (और अक्सर अपेक्षित) साइड इफेक्ट्स जैसे कि एक के बजाय दो संदेश बनाना।


पोस्ट और जीईटी (AJAX के साथ उनका उपयोग करते समय) के बीच एकमात्र "बड़ा" अंतर है क्योंकि जीईटी प्रदान किया गया यूआरएल है, वे थर्म लम्बाई में सीमित हैं (क्योंकि यूआरएल लंबाई में अनंत नहीं है)।


HTTP प्रोटोकॉल अंडरलेइंग सीखें

यह एक कार चलाने के समान है। आप खुद को एक कार खरीदते हैं और सड़क पर जाते हैं, लेकिन आप किसी भी संकेत, रोशनी या अन्य नियमों को नहीं जानते हैं जिन्हें आप मानना ​​चाहिए। स्पष्ट रूप से आप ड्राइव करने में सक्षम नहीं हैं भले ही आप जानते हैं कि कार का प्रबंधन कैसे करें। कम से कम सुरक्षित रूप से नहीं। अपने लिए नहीं, न तो दूसरों के लिए।

आपको HTTP प्रोटोकॉल के बारे में कुछ सीखना चाहिए। जीईटी / पोस्ट संबंधित नहीं हैं (कम से कम सीधे नहीं) PHP / AJAX / jQuery या इसी तरह के लिए। वे उनका उपयोग करते हैं क्योंकि वे संचार के लिए HTTP प्रोटोकॉल का उपयोग कर रहे हैं। और केवल HTTP और प्रोटोकॉल से HTTP प्रोटोकॉल के लिए बहुत कुछ है।

इनमें से कुछ को देखें और फिर अपने आप को भी खोजें:







http-method