मुझे URL में पैरामीटर और क्वेरी स्ट्रिंग्स के बीच बहुत अंतर नहीं दिखता है। तो क्या अंतर है और एक दूसरे के ऊपर कब इस्तेमाल किया जाना चाहिए?
मुझे URL में पैरामीटर और क्वेरी स्ट्रिंग्स के बीच बहुत अंतर नहीं दिखता है। तो क्या अंतर है और एक दूसरे के ऊपर कब इस्तेमाल किया जाना चाहिए?
जवाबों:
क्वेरी घटक पहले से निर्देशित होता है ?यूआरआई में। "क्वेरी स्ट्रिंग" एक समानार्थी शब्द हो सकता है (यह शब्द यूआरआई मानक में उपयोग नहीं किया गया है)।
क्वेरी घटकों के साथ HTTP URI के लिए कुछ उदाहरण:
http://example.com/foo?bar
http://example.com/foo/foo/foo?bar/bar/bar
http://example.com/?bar
http://example.com/?@bar._=???/1:
http://example.com/?bar1=a&bar2=b
( क्वेरी घटक में अनुमत पात्रों की सूची )
क्वेरी घटक का "प्रारूप" URI लेखकों पर निर्भर है। एक आम सम्मेलन ( लेकिन एक सम्मेलन से ज्यादा कुछ नहीं, जहां तक यूआरआई मानक का संबंध है ) कुंजी-मूल्य जोड़े, उर्फ के लिए क्वेरी घटक का उपयोग करना है। पैरामीटर , ऊपर दिए गए अंतिम उदाहरण की तरह bar1=a&bar2=b:।
इस तरह के पैरामीटर अन्य यूआरआई घटकों में भी दिखाई दे सकते हैं, अर्थात, पथ और खंड। जहां तक यूआरआई मानक का संबंध है, यह आपके ऊपर है कि किस घटक और किस प्रारूप का उपयोग करना है।
उदाहरण URI पथ में पैरामीटर, क्वेरी और खंड के साथ:
http://example.com/foo;key1=value1?key2=value2#key3=value3
: क्वेरी घटक के बारे में URI मानक कहता है :
[...] क्वेरी घटकों का उपयोग अक्सर "कुंजी = मान" जोड़े के रूप में जानकारी की पहचान करने के लिए किया जाता है […]
: यूआरआई मानक पथ घटक के बारे में कहता है :
[...] अर्धविराम (";") और बराबर ("=") आरक्षित वर्णों का उपयोग अक्सर उस खंड पर लागू मापदंडों और पैरामीटर मानों को परिसीमित करने के लिए किया जाता है। अल्पविराम (",") आरक्षित वर्ण अक्सर समान उद्देश्यों के लिए उपयोग किया जाता है।
पैरामीटर कुंजी-मूल्य जोड़े हैं जो URL पथ के अंदर दिखाई दे सकते हैं, और अर्धविराम वर्ण ( ;) के साथ शुरू हो सकते हैं ।
क्वेरी स्ट्रिंग पथ के बाद दिखाई देता है (यदि कोई हो) और प्रश्न चिह्न वर्ण ( ?) के साथ शुरू होता है ।
दोनों मापदंडों और क्वेरी स्ट्रिंग में कुंजी-मूल्य जोड़े हैं।
एक में GETअनुरोध, पैरामीटर URL अपने आप में दिखाई देते हैं:
<scheme>://<username>:<password>@<host>:<port>/<path>;<parameters>?<query>#<fragment>
एक में POSTअनुरोध, पैरामीटर URL अपने आप में प्रकट हो सकते हैं, लेकिन यह भी datastream (सामग्री के रूप में जाना जाता है) में।
क्वेरी स्ट्रिंग हमेशा URL का एक हिस्सा है।
पैरामीटर form-dataPOST विधि का उपयोग करते समय डेटास्ट्रीम में दफन किए जा सकते हैं ताकि वे URL में दिखाई न दें। हाँ एक POSTअनुरोध फॉर्म डेटा के रूप में मानकों को परिभाषित कर सकते हैं और URL में है, और क्योंकि मापदंडों कई मान हो सकते हैं इस असंगत नहीं है।
मुझे इस व्यवहार के लिए अब तक कोई स्पष्टीकरण नहीं मिला है। मुझे लगता है कि यह कभी-कभी एक POSTअनुरोध से "अनहाइड" मापदंडों के लिए उपयोगी हो सकता है , या यहां तक कि कोड को एक GETअनुरोध से निपटने वाले कोड को कुछ हिस्सों को संभालने के साथ साझा करने दें POST। बेशक यह केवल एक यूआरएल में सर्वर कोड सपोर्टिंग पैरामीटर के साथ काम कर सकता है।
जब तक आप बेहतर अंतर्दृष्टि प्राप्त नहीं कर लेते, मैं आपको केवल अनुरोधों के form-dataडेटास्ट्रीम में मापदंडों का उपयोग करने का सुझाव देता हूं POST।
सूत्रों का कहना है: