Struktur und Daten trennen
Eine URL-Abfrage steht oft nach dem Fragezeichen und enthält durch kaufmännische Und-Zeichen getrennte Paare der Form Schlüssel=Wert. Diese Trennzeichen haben eine strukturelle Bedeutung. Enthält der Wert selbst ein Und-Zeichen, muss es innerhalb des Wertes dargestellt werden, damit kein neues Paar entsteht. Ein Komponentencodierer bereitet ein einzelnes Datum vor; ein Abfragegenerator setzt Schlüssel, Werte und Trennzeichen zusammen. Das sind verschiedene Arbeitsebenen. Codieren Sie nicht die ganze fertige Abfrage als Komponente, sonst werden Fragezeichen, Gleichheitszeichen und Trennzeichen zu Daten. Fügen Sie umgekehrt keine rohen Werte zwischen Trennern ein und hoffen auf die richtige Interpretation.
Beispiel mit wiederholtem Schlüssel
Angenommen, eine Suche benötigt q mit dem Wert red & blue und zweimal tag mit a und b. Geben Sie dem JSON-zu-Abfrage-Werkzeug ein Objekt mit q als Zeichenfolge und tag als Array. Die Formularserialisierung ergibt q=red+%26+blue&tag=a&tag=b. Das Plus steht in dieser Konvention für ein Leerzeichen; %26 schützt das Und-Zeichen innerhalb des Suchbegriffs. Das umgekehrte Werkzeug liefert q als red & blue und tag als Array mit zwei Zeichenfolgen zurück. Die Wiederholung ist Absicht: tag=a&tag=b ist nicht dieselbe Struktur wie ein einzelner Wert mit Komma. Ändern Sie im eingebetteten Werkzeug einen Tag und prüfen Sie die Ausgabe.
- Roh: q = red & blue; tag = a, b
- Abfrage: q=red+%26+blue&tag=a&tag=b
- Analyse: q ist ein Ausdruck; tag hat zwei Werte
Warum eine Komponente anders aussieht
Der eigene URL-Komponentencodierer verwendet die Regeln für einen einzelnen Wert. Ein Leerzeichen kann dort als %20 erscheinen, während ein auf URLSearchParams beruhender Abfrageserialisierer ein Plus verwendet. Beides kann im jeweiligen Kontext gültig sein, ergibt aber nicht denselben Text. Ein wörtliches Plus in einer Formularabfrage muss geschützt werden, sonst wird es beim Einlesen zu einem Leerzeichen. Erneutes Codieren eines bereits codierten Prozentzeichens ergibt %25, ein typisches Zeichen versehentlicher Doppelcodierung. Halten Sie Schlüssel und Werte roh, bis der Generator sie behandelt, oder codieren Sie bei manuellem Zusammenbau jede Komponente genau einmal. Mischen Sie beide Wege nicht.
Was nach dem Rückweg erhalten bleibt
Der Abfrageparser von MultiVerto macht aus wiederholten Schlüsseln Arrays. Alle Werte kommen als Zeichenfolgen zurück, auch wenn der JSON-Generator zuvor eine Zahl oder einen Wahrheitswert erhielt. Den ursprünglichen Zahlentyp kann er nicht erraten. Leere Arrays und verschachtelte Objekte haben in diesem einfachen Paarformat ebenfalls keine direkte Darstellung; der Generator weist sie zurück. Andere APIs können bei leeren Werten, Duplikaten und Reihenfolge andere Regeln wählen. Ein Hin- und Rückweg kann nützliche Paare erhalten, ohne alle Details eines reicheren JSON-Objekts zu bewahren. Lesen Sie den API-Vertrag, bevor Sie Arrays, fehlende Felder und leere Texte festlegen.
Einen stabilen Testfall anlegen
Notieren Sie zuerst die Zieladresse sowie jeden Schlüssel und jeden rohen Wert getrennt. Bauen Sie die Abfrage genau einmal und betrachten Sie die Codierung reservierter Zeichen. Lesen Sie sie anschließend wieder ein, vor allem wenn Werte Und-Zeichen, Plus, Prozent oder nicht-ASCII-Zeichen enthalten. Prüfen Sie einen wiederholten Schlüssel, sofern der Server Arrays unterstützt, und bestätigen Sie dessen tatsächliche Interpretation. Geben Sie keine Geheimnisse in eine Abfrage, nur weil ihre Zeichen codiert sind: URLs lassen sich kopieren, protokollieren und teilen. MultiVerto berechnet das Beispiel im Browser; für die später veröffentlichte Adresse gelten die Sichtbarkeitsregeln des Zielsystems.