Есть запросы, которые удобно отправлять через GET — короткие, понятные, с параметрами в строке. А есть сложные: поиск с десятком фильтров, аналитика с группировками, отчёты с выборкой полей. Такие запросы в GET не влезают — URL становится длинным, нечитаемым и упирается в лимиты.
Можно отправить через POST с телом — это удобно. Но инфраструктура считает POST операцией записи, даже если вы назвали эндпоинт
/search. Прокси, кэши и WAF видят POST и не знают, что это просто чтение.QUERY — это метод, который объединяет лучшее из обоих подходов. Параметры передаются в теле (как в POST), но при этом он сохраняет семантику безопасного и идемпотентного чтения (как в GET). Вся цепочка обработки — от клиента до сервера — получает чёткий сигнал: это запрос данных, состояние на сервере не меняется.
Когда использовать:
— сложный поиск с вложенными условиями;
— аналитические отчёты с группировками;
— выборка полей и сортировка;
— любые операции, которые по смыслу — чтение, но требуют структурированного ввода.
Простой случай —
GET /orders?status=paid — остаётся рабочим вариантом. QUERY не заменяет старые методы, а даёт дополнительную возможность там, где GET становится неудобным.Метод уже стандартизован и появился в реестре IANA. Библиотеки и инструменты будут добавлять поддержку постепенно — как всегда бывает с новыми стандартами. В браузерах QUERY потребует предварительного OPTIONS-запроса для CORS. Но для серверных API это не проблема, а для новых проектов метод можно закладывать уже сейчас.
Старые способы остаются. Просто теперь есть ещё один инструмент.
#ПерископИФ



