Laravel backports router support for the new HTTP QUERY method
Route::query() lands in Laravel 13.35.0, letting search and filter endpoints carry a request body while staying safe, idempotent and cacheable like GET.
Laravel 13.35.0, released 6 October, backports Route::query() to the 13.x branch, giving the router first-class support for the HTTP QUERY method:
Route::query('/products/search', SearchProductsController::class);
QUERY comes from RFC 10008, published by the IETF in June 2026 — the first new HTTP method since PATCH in 2010. It’s safe and idempotent like GET, but carries a request body like POST, so a client can send rich filters without cramming them into a URL or losing cache semantics. Laravel’s HTTP client and test helpers (Http::query(), query(), queryJson()) shipped back in 13.19; this release adds the router-side piece. CSRF verification still applies by default, since the route handler is app code with a body regardless of what the spec calls safe, though you can opt a route out with preventRequestForgery(except: [...]). The PR leaves the Registrar contract untouched, so there’s no breaking change for custom routers.
Why it matters: anyone building a search or filter endpoint has had to choose between a GET with a URL-length ceiling and logged query strings, or a POST that caches and proxies treat as a write. QUERY, and now Laravel’s routing support for it, removes that trade-off for Laravel apps without waiting for version 14.