151 votes

Quelle est la différence entre les paramètres d'URL et les chaînes de requête?

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?

123voto

unor Points 14115

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.

50voto

Laurent Caillette Points 106

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:

Ce Que Chaque Développeur Doit Savoir Sur Les Url

RFC 3986

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X