Gibt es eine Spezifikation für verschachtelte urlencodierte Parameter []?

9

An einem Punkt im Verlauf der Geschichte begannen serverseitige Sprachen, urlencodierte Parameter zu optimieren, um Unterstützung für das Senden von Daten als Arrays und Schlüssel / Wert-Objekte hinzuzufügen:

%Vor%

Ich spiele mit einigen Edge Cases im Parsing von verschachtelten Parametern einer Bibliothek herum, zB Erhaltung der Parameterreihenfolge. Gibt es eine Spezifikation, die festlegt, wie ein Server diese Kodierung verarbeiten soll? Wenn nicht, welche Referenzimplementierung führte diese Syntax ein?

    
Brad Koch 15.05.2015, 14:04
quelle

2 Antworten

3

Eckige Klammern in URIs

Nach RFC-3986 "Uniform Resource Identifier (URI): Generische Syntax" mit Uncodierte eckige Klammern in URIs sind nicht erlaubt. Daher ist es kein HTTP-Standard.

  

Ein Host, der durch eine Internet Protocol-Literaladresse identifiziert wird, Version 6 [RFC3513] oder höher, wird dadurch unterschieden, dass das IP-Literal in eckige Klammern ("[" und "]") eingeschlossen wird. Dies ist die einzige Stelle, an der in der URI-Syntax eckige Klammerzeichen zulässig sind.

Viele Programmiersprachen verwenden eckige Klammern für Arrays, daher denke ich, es war ein natürlicher Übertrag, um eckige Klammern in URIs zu verwenden.

  

Gibt es eine Spezifikation, die festlegt, wie ein Server diese Codierung verarbeiten soll?

Nein, zumindest nicht sprachunabhängig.

Erste Implementierung

Viele Webanwendungs-Frameworks ermöglichen die Wiederverwendung des gleichen Schlüssels in der Abfrage, um ein Array zu erstellen, z. B. http://example.org/?foobar=hello&foobar=world . Diese Frameworks erlauben auch die Verwendung von eckigen Klammern in Schlüsseln, aber es macht keinen Unterschied, sie sind nur ein Teil des Namens. Assoziative Arrays werden selten unterstützt. (Vorbehalt: Ich bin nicht mit all diesen Sprachen vertraut.)

  • Perl, 1987: Nummerierte Arrays werden unterstützt, aber keine assoziativen Arrays.
  • PHP, 1995: Unterstützt nummerierte Arrays sowie assoziative Arrays.
  • Active Server Pages (ASP), 1996: Nummerierte Arrays werden unterstützt, aber keine assoziativen Arrays.
  • JavaServerPages (JSP), 1999: Nummerierte Arrays werden unterstützt, aber keine assoziativen Arrays.
  • JAX-RS (Java), 2008: Nummerierte Arrays werden unterstützt, aber keine assoziativen Arrays.

Bisher ist PHP die einzige Sprache, die ich gefunden habe, die assoziative Arrays in URLs ohne benutzerdefinierten Code unterstützt.

    
Christian Strempfer 22.05.2015 15:28
quelle
0

http_build_query war schon sehr lange in PHP. Wahrscheinlich das. Ссылка

    
Ewan Mellor 24.05.2015 06:52
quelle

Tags und Links