Olvídate de las URL interminables en la barra de direcciones: el método QUERY revolucionará las búsquedas en Internet.

Olvídate de las URL interminables en la barra de direcciones: el método QUERY revolucionará las búsquedas en Internet.

Un término — la idempotencia — marcará el futuro de las peticiones web.

image

Las consultas de búsqueda complejas tienen ahora su propia forma de comunicarse con el servidor. El Consejo de Ingeniería de Internet (IETF) aprobó un nuevo método HTTP llamado QUERY, que permitirá enviar grandes conjuntos de condiciones sin direcciones enormes ni el uso inapropiado del método POST.

El nuevo método está descrito en la norma RFC 10008. QUERY transmite los parámetros de la consulta en su cuerpo, como POST, pero se considera seguro e idempotente. Este último término significa que una solicitud enviada nuevamente no debe cambiar el resultado ni provocar acciones indeseadas. El servidor puede recibir QUERY una o varias veces sin crear registros nuevos ni cargar cargos repetidos.

Hasta ahora para las búsquedas se usaba habitualmente GET. Los parámetros se añadían directamente a la dirección después del signo de interrogación. Ese enfoque funciona bien para consultas simples, pero los filtros anidados, el ordenamiento, los rangos de fechas y otras condiciones convierten rápidamente la dirección en una cadena larga e incómoda.

No existe un límite único para la longitud de la dirección. La norma recomienda soportar al menos 8000 octetos; sin embargo, una cadena demasiado larga puede ser rechazada por el navegador, el servidor, un cortafuegos u otro equipo intermedio. Además, los parámetros en la dirección pueden quedar en el historial del navegador, en los registros del servidor y en los marcadores, por lo que los datos confidenciales corren riesgo de filtrarse.

Los desarrolladores sorteaban las limitaciones usando POST, colocando las condiciones complejas en el cuerpo de la solicitud, a menudo en formato JSON. Este método se utiliza ampliamente en interfaces de programación, incluido GraphQL. El problema es para lo que POST fue concebido originalmente: el protocolo no lo considera seguro ni idempotente, porque una solicitud puede crear o modificar datos en el servidor.

Por eso los servidores proxy, las redes de entrega de contenido y los gateways no pueden, sin información adicional, almacenar las respuestas POST en caché ni repetir automáticamente la solicitud tras una caída de la conexión. QUERY comunica explícitamente a los sistemas intermedios que la operación solo solicita datos y no cambia el estado del recurso. Gracias a esto, las respuestas se pueden almacenar en caché y las solicitudes fallidas repetirse automáticamente.

Para que el nuevo método llegue a tener soporte generalizado, hará falta tiempo. Los formularios HTML convencionales solo funcionan por ahora con GET y POST, y las solicitudes desconocidas pueden ser rechazadas por servidores proxy, balanceadores de carga, redes de entrega de contenido, cortafuegos y plataformas web.

Las herramientas del lado del servidor ya comienzan a soportar el nuevo método. Node.js añade QUERY al módulo HTTP, el lenguaje Go permite enviar métodos arbitrarios, y la plataforma Laravel ya puede recibir este tipo de solicitudes. Los desarrolladores esperan que primero los servidores y las herramientas de desarrollo adopten QUERY, luego las plataformas web, y más tarde lo integren los navegadores y la API fetch.