HTTP-метод, который мы подменяли на протяжении 16 лет
Бэкенд-разработчики постоянно сталкиваются с проблемой эндпоинтов поиска.
Вы хотите использовать GET, потому что поиск — это операция чтения. Но ваши фильтры поиска становятся слишком большими. Ваш URL достигает двух тысяч символов. Прокси-серверы обрезают ваш запрос. Поиск перестает работать.
Чтобы обойти ограничение, вы переходите на POST. Это работает, но это ложь. POST сообщает каждому прокси-серверу и кэшу, что вы изменяете данные. Это отключает кэширование. Вы теряете скорость GET.
На протяжении шестнадцати лет у нас не было золотой середины.
В июне 2026 года IETF опубликовала RFC 10008. Она вводит метод QUERY. Это первый новый HTTP-метод с 2010 года.
QUERY сочетает в себе лучшие стороны GET и POST:
• Он передает тело запроса для сложных фильтров. • Он является безопасным (safe), то есть сервер не изменяет свое состояние. • Он идемпотентен (idempotent), то есть его можно запускать дважды с одним и тем же результатом. • Он кэшируемый (cacheable), что позволяет CDN сохранять ответы.
Запрос QUERY выглядит так:
QUERY /products HTTP/1.1
Host: api.shop.example
Content-Type: application/json
{
"filter": { "category": "boots", "inStock": true },
"sort": "-price",
"limit": 20
}
Новый RFC также добавляет заголовок Accept-Query. Это позволяет API сообщать, какие форматы запросов оно поддерживает.
Предупреждение для разработчиков:
Кэширование запроса QUERY отличается от кэширования GET-запроса. Кэш GET использует URL в качестве ключа. Кэш QUERY должен использовать тело запроса как часть ключа. Если ваша инфраструктура этого не понимает, один пользователь может увидеть результаты частного поиска другого пользователя.
Пока не спешите использовать это в продакшене. Экосистеме нужно время, чтобы адаптироваться.
• Браузеры пока не поддерживают QUERY в fetch().
• HTML-формы поддерживают только GET и POST.
• Многие API-шлюзы и WAF будут отклонять неизвестные методы.
Проектируйте свой API с учетом QUERY, но пока сохраняйте эндпоинты POST.
QUERY ставит точку в долгом компромиссе. Он позволяет задавать сложные вопросы, не обманывая сеть.
Вы ждете, когда экосистема подтянется, или уже тестируете QUERY?
Источник: https://dev.to/arya_koste_5845807df94776/query-the-http-method-weve-been-faking-for-16-years-f9i
