Durante dieciséis años, los desarrolladores que necesitaban realizar consultas complejas a un servidor han estado atrapados con una solución temporal. Cuando la carga útil de búsqueda crecía demasiado para una URL, o cuando los filtros anidados y los parámetros sensibles se negaban a caber dentro de una cadena de consulta, la única opción práctica era POST. Transportaba los bytes, pero mentía sobre la intención. POST señala un cambio de estado. Usarlo para una operación de solo lectura obligaba a toda la ruta de red —cachés, proxies y navegadores— a tratar una consulta inocente como si pudiera alterar una base de datos.
Ese compromiso finalmente ha terminado. En junio de 2026, el IETF publicó el RFC 10008, estandarizando formalmente el método QUERY. Es el primer método HTTP nuevo desde que se introdujo PATCH en 2010. QUERY existe específicamente para solicitudes seguras e idempotentes que, por casualidad, necesitan un cuerpo. No cambia el estado del servidor. Repetir la misma solicitud produce el mismo resultado. Es cacheable, lo que significa que los intermediarios pueden almacenar y reutilizar la respuesta. Y a diferencia de GET, permite una carga útil de datos al igual que POST.
Las consultas GraphQL y los endpoints de búsqueda REST complejos son los claros ganadores. Ya no tienes que meter sesenta parámetros de consulta en una URL ni ocultar un documento de filtro JSON dentro de un cuerpo POST que los intermediarios se negarán a cachear. La semántica ahora es honesta.
Pero un RFC es solo tinta. Entre tu aplicación y tus usuarios se interpone una densa capa de infraestructura, y la mayor parte de ella nunca ha oído hablar de QUERY.
El problema de la caché aún no está resuelto
Con una solicitud GET, el almacenamiento en caché es sencillo. La clave de caché es la URI. Dos usuarios que acceden a la misma URL obtienen la misma respuesta almacenada, siempre que los encabezados lo permitan.
QUERY rompe ese modelo porque los parámetros de la solicitud residen en el cuerpo. Para que una caché reconozca que dos solicitudes son idénticas, la clave de caché debe incorporar tanto la URI como el contenido del cuerpo. Ese requisito introduce una fricción operativa real.
Primero, los servidores de borde y las CDNs deben almacenar en búfer todo el cuerpo de la solicitud antes de poder calcular un hash. Eso consume memoria y tiempo en el nodo de borde. Segundo, dos consultas lógicamente idénticas pueden no producir los mismos bytes. Un cliente podría enviar {"status":"active"} mientras que otro envía {"status": "active"} con diferentes espacios en blanco o un orden de claves distinto. A menos que la capa de caché analice, normalice y canonicalice el cuerpo —ordenando las claves JSON, eliminando el formato insignificante y manejando las diferencias de codificación—, la misma pregunta fallará en la caché cada vez.
Lo más crítico es que las CDNs principales aún no particionan la caché por el cuerpo de la solicitud para QUERY. Cloudflare, por ejemplo, no trata el cuerpo como parte de la clave de caché para este método en su forma actual. Si implementas QUERY asumiendo que "cacheable" significa "almacenado en caché", podrías ver errores de colisión, fallos de caché universales o respuestas que se filtran entre solicitudes no relacionadas. Hasta que tu proveedor publique soporte explícito, asume que QUERY no es significativamente cacheable en producción.
Probablemente tus herramientas lo bloqueen primero
Cada solicitud HTTP atraviesa una pila de middleboxes, y la mayoría de ellos aplican reglas estrictas sobre qué métodos son legales.
Los Web Application Firewalls y los API gateways a menudo dependen de listas de permitidos explícitas. Un conjunto de reglas típico permite GET, POST, PUT, DELETE y PATCH. Cualquier otra cosa es descartada o respondida con un 405 Method Not Allowed. QUERY chocará con esos muros antes de llegar siquiera al código de tu aplicación.
Los motores de reglas de seguridad añaden otro obstáculo. Algunos sistemas de detección de intrusiones asumen que una solicitud que lleva un cuerpo
