Домой Статьи и аналитика Технологии Стандартизирован новый HTTP-метод QUERY, комбинирующий возможности GET и POST

Стандартизирован новый HTTP-метод QUERY, комбинирующий возможности GET и POST

Новый стандарт RFC 10008 позволяет передавать объемные параметры в теле запроса, сохраняя при этом безопасность логов и возможность кэширования.

Инженерный комитет IETF (Internet Engineering Task Force), отвечающий за развитие архитектуры и протоколов интернета, официально утвердил новый HTTP-метод QUERY и опубликовал спецификацию RFC 10008. Этот стандарт призван объединить сильные стороны методов GET и POST, предлагая эффективное решение для выполнения запросов на чтение данных.

Особенности работы метода QUERY

С технической точки зрения QUERY функционирует по принципу POST: параметры передаются не в адресной строке (URI), а непосредственно в теле запроса. Это позволяет отправлять сложные и объемные структуры данных, что недоступно для традиционного GET, где размер параметров ограничен 8000 байт.

Однако по своей логике метод ближе к GET: он предназначен для операций чтения, состояние сервера при этом не меняется, а сами запросы являются идемпотентными (их можно безопасно повторять или перезапускать). Еще одно важное преимущество заключается в безопасности данных: параметры запроса не попадают в адресную строку браузера и не сохраняются в стандартных логах сервера, что упрощает скрытие конфиденциальной информации.

Взаимодействие с сервером

Для диагностики и проверки возможностей системы IETF рекомендует использовать уже привычные инструменты:

  • OPTIONS — для проверки поддержки метода QUERY сервером.
  • HEAD — для уточнения поддерживаемых форматов передачи данных.

Кэширование и форматы

Спецификация предусматривает гибкую систему кэширования. Обработчик может сохранить результат запроса, присвоить ему уникальный URI и предоставить возможность обращения к нему через стандартный метод GET. Для управления актуальностью данных используются заголовки:

  • Last-Modified — информирует о наличии кэшированной версии.
  • If-Modified-Since — позволяет проверить, обновлялись ли данные с момента последнего запроса.

Также предусмотрено использование заголовков Content-Location и Location. Первый указывает на результат уже выполненного запроса, а второй — на возможность повторить запрос с теми же параметрами.

Метод QUERY поддерживает не только стандартный application/x-www-form-urlencoded, но и специализированные форматы, такие как JSONPath (application/jsonpath), XSLT (application/xslt+xml) или SQL (application/sql). Информацию о том, какие типы данных принимает сервер, можно получить через заголовок Accept-Query.

Источник: http://www.opennet.ru