क्वेरी स्ट्रिंग पार्सर

ब्राउज़र में चलता है वेब

?a=1&b[]=2 को पढ़ने लायक़ तालिका या JSON में बदलें, पैरामीटर संपादित करें और सही तरीक़े से एन्कोड की गई क्वेरी स्ट्रिंग दोबारा बनाएँ।

गोपनीयता: यह टूल पूरी तरह आपके ब्राउज़र में चलता है। आपका इनपुट कभी आपके डिवाइस से बाहर नहीं जाता।
टूल लोड हो रहा है…

URL किन हिस्सों से बनता है, और URL एन्कोडिंग क्या करती है?

URL में स्कीम, अथॉरिटी (होस्ट और पोर्ट), पाथ, key=value जोड़ों की वैकल्पिक क्वेरी स्ट्रिंग और वैकल्पिक फ़्रैगमेंट होता है (RFC 3986)। URL के अंदर अर्थ रखने वाले कैरेक्टर — स्पेस, &, =, /, ? और ASCII से बाहर का सब कुछ — परसेंट-एन्कोड होने चाहिए (स्पेस %20 बनता है) ताकि रिसीवर डेटा और संरचना में फ़र्क कर सके। ब्राउज़र URL पार्स और सीरियलाइज़ करते समय WHATWG URL Standard मानते हैं।

क्वेरी स्ट्रिंग पार्सर कैसे इस्तेमाल करें

  1. कोई क्वेरी स्ट्रिंग या पूरा URL पेस्ट करें।
  2. पैरामीटर तालिका (पोज़िशन, key, value, bracket path, कच्चा रूप) और JSON व्यू देखें।
  3. अपने API के मुताबिक़ array स्टाइल और एन्कोडिंग चुनें और दोबारा बनी क्वेरी स्ट्रिंग कॉपी करें।

क्वेरी स्ट्रिंग पार्सर की खूबियाँ

  • ?, & और ; से अलग किए गए पैरामीटर percent- तथा plus-डिकोडिंग के साथ पार्स करता है
  • दोहराई गई key सरणी बन जाती हैं; key[] और key[a][b] नोटेशन सरणी तथा nested ऑब्जेक्ट में बदल जाती है
  • JSON व्यू में वैकल्पिक टाइप पहचान (नंबर, boolean, null)
  • चार array स्टाइल (repeat, brackets, indices, comma) और दो एन्कोडिंग (RFC 3986, form) में क्वेरी दोबारा बनाता है
  • मूल क्रम को फिर से एन्कोड करके संरचित पुनर्निर्माण के साथ दिखाता है, वैकल्पिक key सॉर्टिंग सहित
  • पूरा URL भी स्वीकार करता है और उसमें से सिर्फ़ क्वेरी हिस्सा निकाल लेता है

क्वेरी स्ट्रिंग पार्सर का उदाहरण

bracket सरणी पार्स करके दोहराई गई key से दोबारा बनाना

इनपुट:

?tags[]=new&tags[]=sale&filter[price][max]=50&q=caf%C3%A9+latte

आउटपुट:

JSON: {"tags":["new","sale"],"filter":{"price":{"max":50}},"q":"café latte"}
Rebuilt (repeat style): tags=new&tags=sale&filter%5Bprice%5D%5Bmax%5D=50&q=caf%C3%A9%20latte

क्वेरी स्ट्रिंग पार्सर के बारे में अक्सर पूछे जाने वाले सवाल

दोहराई गई key कैसे संभाली जाती हैं?

ids=1&ids=2 JSON व्यू में सरणी [1,2] बन जाती है ("JSON में नंबर/बूलियन को पहचानें" बंद हो तो ["1","2"]), और तालिका में दोनों प्रविष्टियाँ अपनी पोज़िशन के साथ दिखती रहती हैं। दोबारा बनी क्वेरी में वही array स्टाइल इस्तेमाल होती है जो आपने चुनी है (repeat, brackets, indices या comma)।

filter[price][max]=50 किसमें बदलता है?

nested ऑब्जेक्ट में: {"filter":{"price":{"max":50}}}। वैल्यू नंबर 50 इसलिए है क्योंकि "JSON में नंबर/बूलियन को पहचानें" डिफ़ॉल्ट रूप से चालू है; इसे बंद करने पर हर वैल्यू स्ट्रिंग ("50") ही रहती है। [] पर ख़त्म होने वाली key सरणी बन जाती हैं — ठीक वैसे ही जैसे PHP, Rails और qs लाइब्रेरी उन्हें पढ़ती हैं।

स्पेस के लिए %20 और + में क्या अंतर है?

RFC 3986 स्पेस को %20 के रूप में percent-encode करता है। HTML फ़ॉर्म एन्कोडिंग (application/x-www-form-urlencoded) + इस्तेमाल करती है। पार्स करते समय दोनों स्पेस के रूप में डिकोड होते हैं; दोबारा बनाते समय वही एन्कोडिंग चुनें जो आपका API चाहता है।

क्या मैं पूरा URL पेस्ट कर सकता हूँ?

हाँ। जब इनपुट URL जैसा लगता है, तो सिर्फ़ ? के बाद का हिस्सा पार्स होता है और fragment (#…) अनदेखा कर दिया जाता है।

तकनीकी नोट्स

डिकोडिंग में + को स्पेस में बदलने के बाद decodeURIComponent इस्तेमाल होता है, और ख़राब अनुक्रम मिलने पर एरर फेंकने के बजाय कच्चा टेक्स्ट ही रख लिया जाता है। Bracket path एक छोटे व्याकरण (नाम के बाद [segment]*) से पार्स होते हैं जो PHP और qs लाइब्रेरी से मेल खाता है; संख्या वाले सेगमेंट array इंडेक्स बन जाते हैं।

संदर्भ

  • RFC 3986: Uniform Resource Identifier (URI): Generic SyntaxIETF · 2005URI के भाग (स्कीम, अथॉरिटी, पाथ, क्वेरी, फ़्रैगमेंट), रिज़र्व्ड कैरेक्टर और परसेंट-एन्कोडिंग।
  • URL StandardWHATWGब्राउज़र वास्तव में URL को कैसे पार्स, सीरियलाइज़ और एन्कोड करते हैं, application/x-www-form-urlencoded सहित।