Meet QUERY: the HTTP method REST always needed

Meet QUERY: the HTTP method REST always needed

The biggest hack in REST history: using POST to read data. It's been happening since day one, and HTTP just fixed it.

Meet QUERY, the new official HTTP method (RFC 10008, June 2026). The first newly standardized method in 16 years.


The problem it solves:

GET is safe, idempotent, and cacheable, perfect for reading. But it takes no body, so everything goes in the URL. The moment your search filters get complex (nested JSON, pagination, combined criteria), the query string breaks down.

So we all reach for POST /search. It works, but you lose everything that makes GET great. POST isn't safe, idempotent, or cacheable. That's a workaround, not a fix.

QUERY takes the best of both: a body like POST, semantics like GET. Safe, idempotent, cacheable, with a body.

Support is getting there. Node.js has parsed it natively since 2024, and OpenAPI 3.2 can document it. Browser fetch support isn't here yet, but it's coming.

Next time you write POST /search, remember: it's a hack as old as REST itself, and it finally has a clean alternative.

RFC 10008. Worth keeping in your back pocket.

(Post image generated using Google Gemini)

Frequently Asked Questions

What is the QUERY HTTP method?

QUERY is a newly standardized HTTP method that combines a request body like POST with the safe, idempotent and cacheable semantics of GET, which makes it ideal for complex read requests such as search.

Why was the QUERY method created?

QUERY was created to fix the long standing workaround of using POST /search to read data. POST is not safe, idempotent or cacheable, while GET cannot carry a request body, so QUERY provides the best of both.

How is QUERY different from GET and POST?

Like GET, QUERY is safe, idempotent and cacheable, but like POST it can carry a request body, so complex filters can go in the body instead of a long URL query string.

Is the QUERY HTTP method supported yet?

Support is still growing. Node.js has parsed QUERY natively since 2024 and OpenAPI 3.2 can document it, but browser fetch support is not widely available yet.