Все заметки
GET - идеален для чтения. Безопасный, идемпотентный, кэшируемый. Но у него есть ограничение - нельзя передать тело запроса. А URL имеет лимит ~8000 символов. Сложные фильтры туда просто не влезают.
POST - позволяет передавать любые данные в теле. Но HTTP считает его небезопасным - он может менять состояние. Поэтому кэш не работает, автоматические повторы опасны, прокси не могут оптимизировать.
Разработчики годами использовали POST для поиска - и это нарушало семантику протокола.
QUERY - это GET с телом запроса. Берёт лучшее от обоих методов:
— Тело запроса как у POST - можно передавать сложные фильтры
— Безопасный и идемпотентный как GET - можно кэшировать и повторять без последствий
— Приватнее - данные в теле, а не в URL который логируется везде
Пока рано переводить всё в продакшн - фреймворки только начинают добавлять поддержку. Но уже сейчас стоит посмотреть на свои POST-эндпоинты которые только читают данные - это первые кандидаты на миграцию.
Авторы RFC - инженеры из Cloudflare и Akamai. Это значит что поддержка на уровне CDN появится раньше чем в фреймворках. 🚀

HTTP получил новый метод впервые за 20 лет
Если ты работаешь с REST API - ты наверняка делал это:
POST /search
{ "category": "laptops", "price": { "min": 1000, "max": 2000 } }
Поиск через POST. Все так делали. Это работало. Но это была ложь - мы говорили HTTP «эта операция что-то меняет», хотя на самом деле просто читали данные. 🤥
В июне 2026 года IETF опубликовал RFC 10008 и стандартизировал новый HTTP метод - QUERY. Первый новый метод с 2010 года когда появился PATCH. 16 лет без изменений.
В чём была проблема
GET - идеален для чтения. Безопасный, идемпотентный, кэшируемый. Но у него есть ограничение - нельзя передать тело запроса. А URL имеет лимит ~8000 символов. Сложные фильтры туда просто не влезают.
POST - позволяет передавать любые данные в теле. Но HTTP считает его небезопасным - он может менять состояние. Поэтому кэш не работает, автоматические повторы опасны, прокси не могут оптимизировать.
Разработчики годами использовали POST для поиска - и это нарушало семантику протокола.
Что такое QUERY
QUERY - это GET с телом запроса. Берёт лучшее от обоих методов:
— Тело запроса как у POST - можно передавать сложные фильтры
— Безопасный и идемпотентный как GET - можно кэшировать и повторять без последствий
— Приватнее - данные в теле, а не в URL который логируется везде
QUERY /users HTTP/1.1
Content-Type: application/json
{ "role": "admin", "sort": "name", "page": 1 }
Когда использовать
Пока рано переводить всё в продакшн - фреймворки только начинают добавлять поддержку. Но уже сейчас стоит посмотреть на свои POST-эндпоинты которые только читают данные - это первые кандидаты на миграцию.
Авторы RFC - инженеры из Cloudflare и Akamai. Это значит что поддержка на уровне CDN появится раньше чем в фреймворках. 🚀

Комментарии