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 utiliser l'un par rapport à l'autre?
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 utiliser l'un par rapport à l'autre?
Réponses:
Le composant de requête est indiqué par le premier ?
dans un URI. "Chaîne de requête" peut être un synonyme (ce terme n'est pas utilisé dans la norme URI).
Quelques exemples d'URI HTTP 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" du composant de requête appartient aux auteurs de l'URI. Une convention courante ( mais rien de plus qu'une convention, en ce qui concerne la norme URI ¹) 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
.
De tels paramètres pourraient également apparaître dans les autres composants URI, c'est-à-dire le chemin² et le fragment. En ce qui concerne la norme URI, c'est à vous de décider quel composant et quel 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
¹ La norme URI dit à propos du composant de requête :
[…] Les composants de requête sont souvent utilisés pour transporter des informations d'identification sous la forme de paires «clé = valeur» […]
² La norme URI dit à propos du composant de chemin :
[…] Les caractères réservés point-virgule (";") et égal ("=") sont souvent utilisés pour délimiter les paramètres et les valeurs de paramètre applicables à ce segment. Le caractère réservé virgule (",") est souvent utilisé à des fins similaires.
Les paramètres sont des paires clé-valeur qui peuvent apparaître dans le chemin de l'URL et commencer par un caractère point-virgule ( ;
).
La chaîne de requête apparaît après le chemin (le cas échéant) et commence par un caractère de point d'interrogation ( ?
).
Les paramètres et la chaîne de requête contiennent des paires clé-valeur.
Dans une GET
requête, les paramètres apparaissent dans l'URL elle-même:
<scheme>://<username>:<password>@<host>:<port>/<path>;<parameters>?<query>#<fragment>
Dans une POST
requête, les paramètres peuvent apparaître dans l'URL elle-même, mais également dans le flux de données (appelé contenu).
La chaîne de requête fait toujours partie de l'URL.
Les paramètres peuvent être enterrés dans le form-data
flux de données lors de l'utilisation de la méthode POST afin qu'ils n'apparaissent pas dans l'URL. Oui, une POST
requête peut définir des paramètres en tant que données de formulaire et dans l'URL, et cela n'est pas incohérent car les paramètres peuvent avoir plusieurs valeurs.
Je n'ai trouvé aucune explication pour ce comportement jusqu'à présent. Je suppose qu'il peut être utile parfois de "montrer" les paramètres d'une POST
requête, ou même de laisser le code gérant une GET
requête partager certaines parties avec le code gérant un POST
. Bien sûr, cela ne peut fonctionner qu'avec le code serveur prenant en charge les paramètres dans une URL.
Jusqu'à ce que vous obteniez de meilleures informations, je vous suggère d'utiliser les paramètres uniquement dans le form-data
flux de données des POST
demandes.
Sources: