Explicación del nuevo método HTTP QUERY

Qué pretende resolver QUERY

  • Se lo considera una formalización de “GET con un cuerpo”: seguro, idempotente, cacheable, pero puede llevar un cuerpo de la solicitud.
  • Está pensado para reemplazar trucos como GET con cuerpo o POST para consultas (por ejemplo, búsqueda, consultas GraphQL).
  • Quienes lo apoyan dicen que aclara la semántica para los intermediarios: “esto se puede cachear, es de solo lectura y tiene un cuerpo”.

¿Por qué no simplemente arreglar GET?

  • Un sector: simplemente estandarizar GET con cuerpo; QUERY es una redundancia, una hinchazón de “estándares XKCD”.
  • Réplica: muchos proxies, WAFs, CDNs y frameworks existentes eliminan o rechazan los cuerpos en GET, o los tratan como algo sin sentido.
  • Cambiar la semántica de GET crearía un comportamiento indefinido en sistemas heredados; un método nuevo puede fallar limpiamente con 405 y permitir un respaldo a POST.
  • Algunos sostienen que ambas vías requieren de todos modos actualizar la infraestructura; ven QUERY como marketing más que como una necesidad técnica.

Compatibilidad, middleboxes y navegadores

  • Hay preocupación de que middlewares “caja negra” mal mantenidos puedan manejar mal los nuevos verbos o incluso fallar.
  • Otros dicen que los estándares deben evolucionar pese al equipo heredado; la infraestructura rota debe arreglarse.
  • Varios señalan que es poco probable (o al menos no está garantizado) que los navegadores implementen QUERY pronto; eso limita su adopción de cara a la web.
  • El encabezado Accept-Query y OPTIONS/405 se citan como mecanismos para negociar compatibilidad.

Casos de uso propuestos

  • APIs de búsqueda como Elastic/OpenSearch, que actualmente abusan de GET con cuerpo o POST; QUERY encajaría de forma natural.
  • GraphQL: usar QUERY para consultas de solo lectura y POST para mutaciones.
  • Filtrado/búsqueda complejos en aplicaciones web: cuerpos JSON en lugar de cadenas de consulta largas.
  • Búsqueda inversa de imágenes y otras consultas basadas en archivos o binarios.

Caché, semántica y REST

  • QUERY se define como cacheable e idempotente; esto abre el caché de CDN/proxy, a diferencia de POST.
  • Los escépticos señalan claves de caché prácticas: los cuerpos carecen de una forma canónica estándar (orden en JSON, espacios en blanco), lo que complica las cachés compartidas.
  • Algunos argumentan que QUERY mejora la claridad de REST/CRUD al separar el GET simple por URL de consultas más complejas; otros dicen que se pueden modelar las consultas como recursos (POST para crear y luego GET).

Seguridad, WAFs y puntos de dolor prácticos

  • Muchos señalan sistemas del mundo real que rechazan o eliminan cuerpos en GET (WAFs, CloudFront, pasarelas de API estrictas).
  • Se ve QUERY como una forma de evitar estos comportamientos indefinidos y reglas de seguridad que tratan GET con cuerpo como algo sospechoso.
  • Otros advierten que QUERY tampoco será compatible inicialmente con esos sistemas, así que la migración seguirá sin ser trivial.