Новый HTTP метод QUERY
Этим летом в спецификацию HTTP добавили новый метод - QUERY.
Добавление новых методов происходит довольно редко. Последний раз такое добавление случалось в 2010 году, т.е. 16 лет назад. Тогда добавили метод PATCH.
Какие причины добавления?
Поиск с фильтрами/параметрами. По идее, можно для поиска использовать GET, т.к. он кэшируется и safe (read-only). Но передавать параметры через URI не удобно: есть лимиты, передавать сложные структуры через URI неудобно, URI также часто логируется, используется в качестве закладок в браузере.
Поэтому на практике используют POST, который изначально под это не приспособлен. Параметры/фильтры передают через тело запроса. CDN, reverse proxy обычно не кэшируют такие запросы и перенаправляют на бэкенд, т.к. кэшировать по URI смысла нет без фильтров, которые в теле запроса. Более того, POST изначально предназначался для получения данных для возможного последующего сохранения, а не для read-only чтений, по типу поиска. Т.е. он не safe, а также не идемпотентен.
Поэтому предложили новый метод - QUERY. Одна из компаний, которая его предложила - Cloudflare. Т.к. они делают, в том числе и, CDN.
QUERY - safe и idempotent как и GET. Т.е. не меняет состояние сервера, read-only. Ответ кэшируется, но в ключ кэша обязано входить тело запроса и его метаданные. Он также возвращает Location, по которому можно при помощи GET получать те же данные, без пересылки тела запроса с параметрами.
RFC: https://www.rfc-editor.org/info/rfc10008/
Post #1299
3.26K
- 👍 44
- ❤ 5
- 🤯 4
- 🔥 1
- 🤝 1