Formátovanie kódu / Návody

Ako zostaviť URL parametre bez dvojitého kódovania

URL dotaz má kľúče, hodnoty a oddeľovače. Kódovanie hodnoty a zostavenie celého dotazu sú dve odlišné úlohy.

Oddeľte štruktúru od údajov

URL dotaz sa často začína otáznikom a tvorí ho séria dvojíc kľúč=hodnota oddelených ampersandmi. Oddeľovače majú štruktúrny význam. Ak sa ampersand nachádza v samotnej hodnote, treba ho zapísať tak, aby sa nepovažoval za začiatok ďalšej dvojice. Kódovač komponentu pripravuje jeden údaj; zostavovač dotazu spája kľúče, hodnoty a oddeľovače. Ide o dve rôzne úrovne práce. Hotový dotaz nekódujte celý ako jediný komponent, inak sa otáznik, znaky rovná sa a ampersandy zmenia na údaje. Rovnako nevkladajte surové hodnoty medzi oddeľovače s očakávaním, že prehliadač uhádne hranice.

Príklad s opakovaným kľúčom

Predstavte si vyhľadávanie, kde má q hodnotu red & blue a dva parametre tag majú hodnoty a a b. Nástroju JSON na URL dotaz zadajte objekt s q ako textom a tag ako poľom. Formulárový zápis vráti q=red+%26+blue&tag=a&tag=b. Znak plus v tejto konvencii vyjadruje medzeru, kým %26 chráni ampersand vo vyhľadávanom texte. Opačný nástroj získa q ako red & blue a tag ako pole dvoch reťazcov. Opakovanie je zámerné: tag=a&tag=b nie je tá istá štruktúra ako jediná hodnota obsahujúca čiarku. Vo vloženom nástroji zmeňte jeden štítok a sledujte výstup.

Oddeľovače tvoria štruktúru, hľadaný výraz zostáva údajom.
  1. Pôvodne: q = red & blue; tag = a, b
  2. Dotaz: q=red+%26+blue&tag=a&tag=b
  3. Čítanie: q je jeden výraz; tag má dve hodnoty

Prečo komponent vyzerá inak

Samostatný kódovač URL komponentu používa pravidlá pre jednu hodnotu. Medzera sa v ňom môže zapísať ako %20, zatiaľ čo zostavovač dotazu založený na URLSearchParams používa plus. Oba zápisy môžu byť vo svojom kontexte platné, ale nie sú totožnými reťazcami. Skutočné plus vo formulárovom dotaze treba zakódovať, inak sa pri čítaní zmení na medzeru. Ďalšie zakódovanie už zakódovaného percenta vytvorí %25, častý príznak dvojitého kódovania. Nechajte kľúče a hodnoty v pôvodnom stave až po zostavenie dotazu alebo pri ručnom skladaní zakódujte každý komponent práve raz. Oba postupy nemiešajte.

Čo zachová spätný prevod

Čítačka dotazov MultiVerto mení opakované kľúče na polia. Všetky hodnoty sa vracajú ako text, aj keď bol pôvodne v JSON číslo alebo logická hodnota. Pôvodný číselný typ z dotazu nemožno automaticky obnoviť. Prázdne polia a vnorené objekty nemajú v tomto jednoduchom formáte dvojíc priamy zápis, preto ich zostavovač odmieta. Iné rozhrania API môžu mať odlišné pravidlá pre prázdne hodnoty, duplicity a poradie. Cesta tam a späť tak zachová užitočné dvojice bez zachovania všetkých detailov bohatšieho objektu JSON. Pred výberom zápisu polí, chýbajúcich položiek a prázdnych textov si prečítajte dokumentáciu služby.

Pripravte opakovateľný test

Najprv zapíšte cieľovú adresu a každý kľúč i pôvodnú hodnotu samostatne. Dotaz zostavte len raz a prezrite si kódovanie vyhradených znakov. Potom ho načítajte späť a overte zamýšľané dvojice, najmä pri ampersandoch, plusoch, percentách a znakoch mimo ASCII. Skúste opakovaný kľúč, ak server podporuje polia, a overte aj jeho výklad na serveri. Tajné údaje nedávajte do URL len preto, že ich znaky sú zakódované: adresy sa môžu kopírovať, zaznamenávať a zdieľať. MultiVerto počíta príklad lokálne, no zverejnená URL sa riadi pravidlami viditeľnosti cieľovej aplikácie.

Vyskúšať konvertor

Zostavte ukážkový dotaz a spätným čítaním overte dvojice.

Zapíše plochý objekt JSON ako parametre URL dotazu.

Otvoriť celý konvertor

Ďalšie návody

Návody na konverzie

Prezrieť návody