September 4, 2026
HTTP QUERY: Finally, a Better Way to Handle Complex Reads
You have probably used a POST request to get data.
By Ossamakharbaq
1 min read
It wasn't because you wanted to create something, but since your query was too complicated to be properly included in a GET request.
For example:
POST /products/search
Content-Type: application/json
{
"categories": ["phones", "tablets"],
"brands": ["Apple", "Samsung"],
"price": { "min": 500, "max": 1500 }
}POST /products/search
Content-Type: application/json
{
"categories": ["phones", "tablets"],
"brands": ["Apple", "Samsung"],
"price": { "min": 500, "max": 1500 }
}It does work, but there's a wrong feeling in terms of meaning.
You're reading data, but you're using **_POST_**.
Then why not use GET? When your query becomes complex you end up with very long URLs containing filters, nested parameters, arrays, sorting, and all the other conditions. It is not a reliable and standardized solution to use a body with a GET request.
That is precisely the problem that HTTP **_QUERY_** was designed to solve.
The QUERY method is a new HTTP method which is intended for safe, read-oriented requests that require request content. Instead of:
POST /products/searchPOST /products/searchyou can have:
QUERY /products
Content-Type: application/json
body: {
"categories": ["phones", "tablets"],
"brands": ["Apple", "Samsung"],
"price": { "min": 500, "max": 1500 }
}QUERY /products
Content-Type: application/json
body: {
"categories": ["phones", "tablets"],
"brands": ["Apple", "Samsung"],
"price": { "min": 500, "max": 1500 }
}Now the HTTP method actually describes what you're doing:
GET โ Read data with a URL-based query
QUERY โ Read data with a structured request body
POST โ Create something or perform an actionGET โ Read data with a URL-based query
QUERY โ Read data with a structured request body
POST โ Create something or perform an actionBy the way, QUERY isn't intended to serve as a replacement for GET. For something simple like:
GET /users?status=activeGET /users?status=activeGET is still perfect.
The QUERY takes on interest when the query is complex.
The method has now been standardised in the form of RFC 10008, which was published in June 2026.
By no means does standardization mean that you'll be using it in all places tomorrow. The browsers, frameworks, proxies, gateways, CDNs, and the other elements of the ecosystem still have to support it.
But the important part is this:
At last there is an HTTP method which allows us to state, "I am not making anything; I am simply posing a complex question to the server."