Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Transmisión de datos mediante cadena de consulta Protocolo HTTP

Además de enviar datos al servidor a través del body, que se utiliza en las solicitudes POST y el envío de formularios, también podemos enviar lo que se llama una cadena de consulta o query string. Estos son parámetros en forma de clave=valor que se colocan en la línea de solicitud después del verbo POST o GET.

POST /login?key=value HTTP/1.1

Es importante mencionar que el apuntador a una página específica puede estar ausente y los parámetros se pueden enviar a la página principal del dominio.

GET /?key=value HTTP/1.1

La cadena de consulta tiene el mismo formato que el cuerpo de una solicitud POST, pero se inicia con el signo ?. Después de eso, podemos enviar parámetros clave=valor&clave2=valor2 y así sucesivamente.

Estructura de la cadena de consulta

Los parámetros de la cadena de consulta no están relacionados con las solicitudes GET, aunque muchos desarrolladores los llaman parámetros GET. A veces en entrevistas se pregunta: "¿Se pueden enviar parámetros POST y GET al mismo tiempo?". La respuesta correcta es que sí se puede, ya que no hay ninguna conexión entre ellos. Además, en algunos lenguajes existen formas de obtener estos datos por separado. Por ejemplo, en PHP existe el arreglo global $_REQUEST, que contiene tanto los parámetros enviados a través de la cadena de consulta como los enviados en un POST.

Pero ¿cómo saber cuándo y por qué utilizar una cadena de consulta? Para ello, es necesario entender el significado de los verbos HTTP. La semántica de los verbos HTTP se expresa no solo en la respuesta que se obtiene, sino también en cómo se puede trabajar con ella. El verbo GET se considera idempotente. Esto significa que su ejecución repetida siempre devuelve el mismo resultado, es decir, es una solicitud normal. Estamos preguntando al sistema sobre algo, y este nos devuelve datos sin cambiar su estado interno. Por lo tanto, cualquier solicitud repetida se procesará de la misma manera, de manera determinista. Se puede hacer una analogía con una función pura. En la realidad, el estado del sistema puede cambiar y no podemos controlarlo, por lo que la caché no es una tarea trivial.

Por otro lado, una solicitud POST no es idempotente y está destinada a modificar datos. Por lo tanto, una solicitud repetida puede dar lugar a resultados diferentes. Si eliminamos datos con la primera solicitud POST, obtendremos un error 404 con la segunda solicitud. Estas solicitudes nunca se almacenan en caché.

Los motores de búsqueda solo siguen enlaces GET, ya que tienen en cuenta la semántica y saben que las solicitudes GET se pueden hacer sin problemas y no causarán ningún problema en el sitio.

Los parámetros de la cadena de consulta se utilizan en las solicitudes GET al trabajar con formularios, que pueden ser de al menos dos tipos: para modificar, crear o agregar datos, y para recuperar datos. Es precisamente al desarrollar el segundo tipo de formularios cuando se utiliza la cadena de consulta. Por ejemplo, puede ser para algún tipo de filtrado o un formulario de búsqueda. Si ingresamos una consulta en un motor de búsqueda, como una palabra, y hacemos clic en el botón de Buscar, veremos que nos redirige a una página cuya URI contiene la cadena de consulta enviada. Esto es muy importante, ya que así no realizamos ningún cambio y podemos compartir un enlace a esta consulta.

Es crucial seguir la semántica de los verbos. Por ejemplo, en algunos sistemas bancarios antiguos, las solicitudes se implementaban inexplicablemente a través de POST. Con este enfoque, no solo no se puede compartir un enlace a la solicitud, sino que incluso actualizar la página con F5 provoca el reenvío de los datos.


Materiales adicionales

  1. Query String / Wikipedia
  2. RFC 3986 (estándar correspondiente)

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY