URL की query string सबसे सरल डेटा फ़ॉर्मेट है जो मौजूद है — key=value जोड़ों की एक लिस्ट, जो एम्परसंड से अलग होती है। लेकिन जैसे ही कुछ ज़्यादा जटिल भेजना हो, यही सादगी दिक्क़त बन जाती है।
Query string सीमित क्यों है
Query string फ़ॉर्मेट मूल रूप से साधारण HTML फ़ॉर्म्स के लिए डिज़ाइन हुआ था, और इसमें डेटा टाइप, नेस्टिंग या array जैसी कोई अवधारणा built-in नहीं है। इसमें सब कुछ टेक्स्ट ही है, इसलिए नंबर 42 और स्ट्रिंग "42" तब तक अलग नहीं होते जब तक कोई कोड उन्हें explicitly parse न करे।
Array भेजने का तरीका: भारत के Node.js इकोसिस्टम का एंगल
भारत Node.js डेवलपर्स के सबसे बड़े समुदायों में से एक है, और Express-आधारित बैकएंड आमतौर पर qs जैसी लाइब्रेरी पर निर्भर करते हैं ताकि tags[]=a&tags[]=b या filter[status]=active जैसी bracket notation को पार्स किया जा सके — यह PHP के नेटिव array पार्सिंग जैसा ही व्यवहार है, बस Node.js में इसे लाइब्रेरी लेवल पर सेट करना पड़ता है। इसके उलट, कुछ फ़्रेमवर्क वही array उसी key को दोहराकर बिना ब्रैकेट के एक्सपेक्ट करते हैं: tags=a&tags=b। क्लाइंट और सर्वर अगर अलग convention मान लें, तो array डेटा चुपचाप खो जाता है या बिगड़ जाता है।
JSON यह समस्या क्यों हल करता है
JSON में built-in टाइप्स (नंबर, बूलियन, null) होते हैं और बिना किसी एन्कोडिंग कन्वेंशन के nested objects और arrays की नेटिव सपोर्ट होती है। यही वजह है कि POST रिक्वेस्ट की बॉडी में जटिल डेटा आमतौर पर JSON के रूप में भेजा जाता है, जबकि query string सिर्फ़ फ़िल्टर या पेज नंबर जैसे साधारण, फ्लैट पैरामीटर्स के लिए रखी जाती है।
यह किस काम आता है
- यह जाँचना कि बैकएंड query string में array पैरामीटर किस फ़ॉर्मेट में एक्सपेक्ट करता है।
- डिबगिंग आसान बनाने के लिए URL पैरामीटर्स को JSON में बदलना।
- यह समझना कि जटिल डेटा स्ट्रक्चर को GET पैरामीटर के बजाय क्यों नहीं भेजना चाहिए।
URL की लंबाई की सीमा
ज़्यादातर ब्राउज़र और सर्वर URL की लंबाई लगभग 2000 कैरेक्टर तक सीमित रखते हैं (सटीक लिमिट ब्राउज़र और वेब सर्वर पर निर्भर करती है), इसलिए query string बड़ी मात्रा में डेटा भेजने के लिए भौतिक रूप से उपयुक्त नहीं है। यही एक और वजह है कि जटिल फ़ॉर्म या array डेटा के लिए JSON बॉडी वाली POST रिक्वेस्ट मानक विकल्प है, जबकि query string वाली GET रिक्वेस्ट छोटे, साधारण पैरामीटर्स के लिए ही रहती है।