Formátování kódu / Návody

Jak sestavit URL parametry bez dvojího kódování

URL dotaz má klíče, hodnoty a oddělovače. Kódování hodnoty a sestavení celého dotazu jsou dva rozdílné úkoly.

Oddělte strukturu od dat

URL dotaz často začíná otazníkem a tvoří ho dvojice klíč=hodnota oddělené ampersandy. Oddělovače mají strukturální význam. Pokud se ampersand nachází v samotné hodnotě, je nutné jej zapsat tak, aby se nepovažoval za další dvojici. Kodér komponenty připravuje jediný údaj; sestavovač dotazu spojuje klíče, hodnoty a oddělovače. Jde o dvě různé úrovně práce. Hotový dotaz nekódujte celý jako jedinou komponentu, jinak se otazník, rovnítka a ampersandy změní na data. Stejně tak nevkládejte syrové hodnoty mezi oddělovače s očekáváním, že prohlížeč odhadne jejich hranice.

Příklad s opakovaným klíčem

Představte si hledání, kde má q hodnotu red & blue a dva parametry tag hodnoty a a b. Nástroji JSON na URL dotaz předejte objekt s q jako textem a tag jako polem. Formulářový zápis vrátí q=red+%26+blue&tag=a&tag=b. Znak plus v této konvenci označuje mezeru, kdežto %26 chrání ampersand v hledaném výrazu. Opačný nástroj získá q jako red & blue a tag jako pole dvou řetězců. Opakování je úmyslné: tag=a&tag=b není stejná struktura jako jediná hodnota s čárkou. Ve vloženém nástroji změňte jeden štítek a sledujte výstup.

Oddělovače tvoří strukturu, hledaný výraz zůstává údajem.
  1. Původně: q = red & blue; tag = a, b
  2. Dotaz: q=red+%26+blue&tag=a&tag=b
  3. Čtení: q je jeden výraz; tag má dvě hodnoty

Proč komponenta vypadá jinak

Samostatný kodér URL komponenty používá pravidla pro jednu hodnotu. Mezera se v něm může zapsat jako %20, zatímco sestavovač dotazu založený na URLSearchParams používá plus. Oba zápisy mohou být ve svém kontextu správné, nejsou však totožnými řetězci. Skutečné plus ve formulářovém dotazu je nutné zakódovat, jinak se při čtení změní v mezeru. Opakované zakódování již zakódovaného procenta vytvoří %25, běžný příznak dvojího kódování. Nechte klíče a hodnoty původní až do sestavení dotazu, nebo při ručním skládání zakódujte každou komponentu právě jednou. Obě metody nemíchejte.

Co zachová zpětný převod

Čtečka dotazů MultiVerto mění opakované klíče na pole. Všechny hodnoty se vracejí jako text, i když bylo původně v JSON číslo nebo logická hodnota. Původní číselný typ z dotazu nelze automaticky obnovit. Prázdná pole a vnořené objekty nemají v tomto jednoduchém formátu dvojic přímý zápis, a proto je sestavovač odmítá. Jiná rozhraní API mohou mít odlišná pravidla pro prázdné hodnoty, duplicity a pořadí. Cesta tam a zpět tedy zachová užitečné dvojice, ale ne všechny detaily bohatšího objektu JSON. Před volbou zápisu polí, chybějících položek a prázdných textů čtěte dokumentaci služby.

Připravte opakovatelný test

Nejprve zapište cílovou adresu a každý klíč i původní hodnotu zvlášť. Dotaz sestavte jen jednou a prohlédněte si kódování vyhrazených znaků. Potom jej načtěte zpět a ověřte zamýšlené dvojice, zejména u ampersandů, plusů, procent a znaků mimo ASCII. Vyzkoušejte opakovaný klíč, pokud server podporuje pole, a ověřte také jeho výklad na serveru. Tajná data nedávejte do URL jen proto, že jsou jejich znaky zakódované: adresy se mohou kopírovat, zaznamenávat a sdílet. MultiVerto počítá příklad lokálně, ale zveřejněná URL se řídí pravidly viditelnosti cílové aplikace.

Vyzkoušet převodník

Sestavte ukázkový dotaz a zpětným čtením ověřte dvojice.

Zapíše plochý objekt JSON jako parametry URL dotazu.

Otevřít celý převodník

Další návody

Návody ke konverzím

Prohlédnout návody