Je ne vois pas beaucoup de différence entre les paramètres et les chaînes de requête, dans l'URL. Alors, quelle est la différence et quand faut-il l'utiliser par-dessus?
Réponses
Trop de publicités?Le composant de requête est indiqué par le premier ?
dans un URI. "La chaîne de requête" pourrait être un synonyme (ce terme n'est pas utilisé dans l'URI standard).
Quelques exemples pour HTTP Uri avec des composants de requête:
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 des caractères autorisés dans le composant de requête)
Le "format" de la requête composant est à l'URI auteurs. Une convention commune (mais rien de plus qu'une convention, d'autant que l'URI standard est concerné1) est d'utiliser le composant de requête pour les paires clé-valeur, aka. paramètres, comme dans le dernier exemple ci-dessus: bar1=a&bar2=b
.
Ces paramètres peuvent également apparaître dans l'autre URI composants, c'est à dire, la path2 et le fragment. Aussi loin que l'URI standard, c'est à vous de composant et le format à utiliser.
Exemple d'URI avec des paramètres dans le chemin, la requête, et le fragment:
http://example.com/foo;key1=value1?key2=value2#key3=value3
1 L'URI standard dit à propos de la requête de la composante:
[...] des composants de requête sont souvent utilisés pour transporter de l'information d'identification sous la forme de "clé=valeur" paires [...]
2 L'URI standard dit sur le chemin de la composante:
[...] le point-virgule (";") et equals ("=") les caractères réservés sont souvent utilisés pour délimiter les paramètres et les valeurs applicables à ce segment. La virgule (",") caractère réservé, est souvent utilisé à des fins similaires.
Les paramètres sont des paires clé-valeur qui peuvent apparaître à l'intérieur du chemin d'URL, et de commencer par un caractère point-virgule (;
).
Chaîne de requête s'affiche après le chemin d'accès (le cas échéant) et commence avec un point d'interrogation (?
).
Les deux paramètres et la chaîne de requête contiennent des paires clé-valeur.
En GET
demande, les paramètres apparaissent dans l'URL elle-même:
<scheme>://<username>:<password>@<host>:<port>/<path>;<parameters>?<query>#<fragment>
En POST
demande, les paramètres peuvent apparaître dans l'URL elle-même, mais aussi dans le flux de données (aussi connue que le contenu).
La chaîne de requête est toujours une partie de l'URL.
Les paramètres peuvent être enterré en form-data
datastream lors de l'utilisation de la méthode POST de sorte qu'ils peuvent ne pas apparaître dans l'URL. Oui un POST
demande pouvez définir des paramètres de la forme des données et dans l'URL, et ce n'est pas incompatible parce que les paramètres peuvent avoir plusieurs valeurs.
Je n'ai trouvé aucune explication à ce problème jusqu'à présent. Je suppose qu'il peut parfois être utile pour afficher à nouveau les paramètres à partir d'un POST
demande, ou même de laisser le code de la manipulation d'un GET
demande de partager quelques parties avec le code de la manipulation d'un POST
. Bien sûr, cela ne peut fonctionner qu'avec le serveur de soutien des codes de paramètres dans une URL.
Jusqu'à ce que vous obtenez de meilleures idées, je vous suggère d'utiliser uniquement les paramètres en form-data
datastream d' POST
des demandes.
Sources: