Desde hace algunas semanas ha circulado en la red la noticia de que existe un nuevo método HTTP, el método QUERY, que se suma a los ya conocidos GET, POST, PUT, etc. 

La noticia ha generado discusión entre los desarrolladores, están los que creen que en realidad no aporta nada “relevante” y los que dicen que “Esto lo cambia todo”. 

Definitivamente nadie está obligado a usarlo, obviamente no va a ser necesario usarlo en todos los casos, habrá escenarios para los que, si sea de utilidad, pero hoy no vengo a hablar de eso, independientemente de si estamos a favor o en contra la realidad es que ya está aquí, como siempre en el mundo del desarrollo toca adaptarse y evolucionar. 

La noticia relevante que vengo a traer el día de hoy es que el nuevo método QUERY ya está soportado completamente en Laravel a partir de la versión 13.19.0 (ya había soporte, pero no era completo) y esto es buena noticia para los que desarrollamos en este hermoso Framework pues nos da la posibilidad de empezar a probar y aplicar. 

Http::query() 

Se añade el nuevo método query() a la clase Http para enviar peticiones con el verbo QUERY, los parámetros se envían en el cuerpo en lugar de la URL (sí, igual que POST), Soporta JSON por defecto o datos de formulario. 

$response = Http::query('https://api.example.com/search', [ 'filter' => ['status' => 'active']]); 


Por lo que he leído en Internet, se supone que el método QUERY viene a sustituir a GET pero no en todos los casos, solo en los casos en los que es necesario enviar parámetros a través de la URL, que en ocasiones se convertían en URLs gigantes e incomprensibles, ahora cada parámetro puede ser enviado en el cuerpo para mantener una URL limpia (sí, igual que POST). 

Además, se añaden query() y queryJson() helpers de testing para probar rutas que responden al método QUERY, similares a postJson(), deleteJson(), etc. 

Puedes ver la noticia completa desde la página de laravel news: https://laravel-news.com/laravel-13-19-0 

¿Por qué usar QUERY en lugar de POST? 

Fácil, todo depende de lo que intentes hacer, POST es el estándar para enviar datos al servidor para que estos en la mayoría de los casos sean almacenados, ejemplo, crear un nuevo registro en base de datos a partir de un formulario, o desde una API, o enviar un archivo o imagen a guardar, etc. 

Una petición POST desde una web normalmente no retorna una vista directamente, sino que redirecciona a una ruta tipo GET la cual si retorna una vista.  

En cambio, una petición QUERY se utiliza para consultas, por ejemplo, un buscador, traer un registro o registros específicos desde una API, etc,  

El método QUERY desde web, si retorna una vista con el resultado de la consulta. 

Entonces para que quede claro: 

Los campos que envías en el cuerpo de una petición POST generalmente será para ser almacenados en una base de datos, ejemplo: 

{“nombre”: “Juan”, “edad”:22,”email”: juan@email.com} 

Generarán un registro en la tabla “clientes”. 


Los campos que envías en el cuerpo de una petición QUERY son para realizar una consulta, ejemplo: 

{“tipo": "cliente”, “estatus": "activo”} 

Retornará una lista de clientes con estatus “activo”.