Ich sehe keinen großen Unterschied zwischen den Parametern und den Abfragezeichenfolgen in der URL. Was ist der Unterschied und wann sollte eines über das andere angewendet werden?
Ich sehe keinen großen Unterschied zwischen den Parametern und den Abfragezeichenfolgen in der URL. Was ist der Unterschied und wann sollte eines über das andere angewendet werden?
Antworten:
Die Abfragekomponente wird durch die erste ?
in einem URI angezeigt . "Abfragezeichenfolge" kann ein Synonym sein (dieser Begriff wird im URI-Standard nicht verwendet).
Einige Beispiele für HTTP-URIs mit Abfragekomponenten:
http://example.com/foo?bar
http://example.com/foo/foo/foo?bar/bar/bar
http://example.com/?bar
http://example.com/?@bar._=???/1:
http://example.com/?bar1=a&bar2=b
( Liste der zulässigen Zeichen in der Abfragekomponente )
Das "Format" der Abfragekomponente liegt bei den URI-Autoren. Eine übliche Konvention ( aber nichts weiter als eine Konvention, was den URI-Standard betrifft ¹) ist die Verwendung der Abfragekomponente für Schlüssel-Wert-Paare, auch bekannt als. Parameter , wie im letzten Beispiel oben : bar1=a&bar2=b
.
Solche Parameter könnten auch in den anderen URI-Komponenten auftreten, dh im Pfad² und im Fragment. In Bezug auf den URI-Standard liegt es an Ihnen, welche Komponente und welches Format verwendet werden soll.
Beispiel-URI mit Parametern im Pfad, in der Abfrage und im Fragment:
http://example.com/foo;key1=value1?key2=value2#key3=value3
¹ Der URI-Standard sagt über die Abfragekomponente :
[…] Abfragekomponenten werden häufig verwendet, um identifizierende Informationen in Form von "Schlüssel = Wert" -Paaren zu übertragen. […]
² Der URI-Standard sagt über die Pfadkomponente :
[…] Die reservierten Zeichen Semikolon (";") und Gleich ("=") werden häufig verwendet, um Parameter und Parameterwerte abzugrenzen, die für dieses Segment gelten. Das reservierte Komma (",") wird häufig für ähnliche Zwecke verwendet.
Parameter sind Schlüssel-Wert-Paare, die im URL-Pfad angezeigt werden können und mit einem Semikolon ( ;
) beginnen.
Die Abfragezeichenfolge wird nach dem Pfad angezeigt (falls vorhanden) und beginnt mit einem Fragezeichen ( ?
).
Sowohl Parameter als auch Abfragezeichenfolge enthalten Schlüssel-Wert-Paare.
In einer GET
Anfrage werden Parameter in der URL selbst angezeigt:
<scheme>://<username>:<password>@<host>:<port>/<path>;<parameters>?<query>#<fragment>
In einer POST
Anfrage können Parameter in der URL selbst, aber auch im Datenstrom (als Inhalt bezeichnet) angezeigt werden.
Die Abfragezeichenfolge ist immer Teil der URL.
Parameter können form-data
bei Verwendung der POST-Methode im Datenstrom vergraben werden, sodass sie möglicherweise nicht in der URL angezeigt werden. Ja, eine POST
Anforderung kann Parameter als Formulardaten und in der URL definieren. Dies ist nicht inkonsistent, da Parameter mehrere Werte haben können.
Ich habe bisher keine Erklärung für dieses Verhalten gefunden. Ich denke, es kann manchmal nützlich sein, Parameter aus einer POST
Anfrage "einzublenden" oder sogar den Code, der eine GET
Anfrage verarbeitet, einige Teile mit dem Code teilen zu lassen, der a verarbeitet POST
. Dies kann natürlich nur mit Servercode funktionieren, der Parameter in einer URL unterstützt.
Bis Sie bessere Einblicke erhalten, empfehle ich Ihnen, Parameter nur im form-data
Datenstrom von POST
Anforderungen zu verwenden.
Quellen: