No veo mucha diferencia entre los parámetros y las cadenas de consulta en la URL. Entonces, ¿cuál es la diferencia y cuándo se debe usar uno sobre el otro?
No veo mucha diferencia entre los parámetros y las cadenas de consulta en la URL. Entonces, ¿cuál es la diferencia y cuándo se debe usar uno sobre el otro?
Respuestas:
El componente de consulta se indica con el primero ?
en un URI. "Cadena de consulta" puede ser un sinónimo (este término no se utiliza en el estándar URI).
Algunos ejemplos de HTTP URI con componentes de consulta:
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
( lista de caracteres permitidos en el componente de consulta )
El "formato" del componente de consulta depende de los autores de la URI. Una convención común ( pero nada más que una convención, en lo que respecta al estándar URI ¹) es usar el componente de consulta para pares clave-valor, también conocido como. parámetros , como en el último ejemplo anterior: bar1=a&bar2=b
.
Estos parámetros también podrían aparecer en los otros componentes de URI, es decir, la ruta² y el fragmento. En lo que respecta al estándar URI, depende de usted qué componente y qué formato usar.
URI de ejemplo con parámetros en la ruta, la consulta y el fragmento:
http://example.com/foo;key1=value1?key2=value2#key3=value3
¹ El estándar URI dice sobre el componente de consulta :
[…] Los componentes de la consulta se utilizan a menudo para llevar información de identificación en forma de pares "clave = valor" […]
² El estándar URI dice sobre el componente de ruta :
[…] El punto y coma (";") y los caracteres reservados igual ("=") se utilizan a menudo para delimitar parámetros y valores de parámetros aplicables a ese segmento. El carácter reservado de coma (",") se utiliza a menudo para propósitos similares.
Los parámetros son pares clave-valor que pueden aparecer dentro de la ruta de URL y comienzan con un carácter de punto y coma ( ;
).
La cadena de consulta aparece después de la ruta (si la hay) y comienza con un signo de interrogación ( ?
).
Tanto los parámetros como la cadena de consulta contienen pares clave-valor.
En una GET
solicitud, los parámetros aparecen en la propia URL:
<scheme>://<username>:<password>@<host>:<port>/<path>;<parameters>?<query>#<fragment>
En una POST
solicitud, los parámetros pueden aparecer en la propia URL, pero también en el flujo de datos (conocido como contenido).
La cadena de consulta siempre forma parte de la URL.
Los parámetros se pueden enterrar en el form-data
flujo de datos cuando se usa el método POST, por lo que es posible que no aparezcan en la URL. Sí, una POST
solicitud puede definir parámetros como datos de formulario y en la URL, y esto no es inconsistente porque los parámetros pueden tener varios valores.
Hasta ahora no he encontrado una explicación para este comportamiento. Supongo que a veces puede ser útil "mostrar" los parámetros de una POST
solicitud, o incluso dejar que el código que maneja una GET
solicitud comparta algunas partes con el código que maneja a POST
. Por supuesto, esto solo puede funcionar con parámetros de soporte de código de servidor en una URL.
Hasta que obtenga mejores conocimientos, le sugiero que utilice parámetros solo en el form-data
flujo de datos de las POST
solicitudes.
Fuentes: