• Информация на сайте предоставляется «как есть», может содержать неточности и не является консультацией или офертой.
  • Перед использованием проконсультируйтесь со специалистом.

Используя сайт, вы подтверждаете, что вы изучили и согласны с документами Политика конфиденциальности и обработки персональных данныхи Пользовательское соглашение.

Сайт использует cookies для работы и сбора аналитики. Вы можете принять или настроить их, а также полностью отключить в настройках браузера.

Настройки cookies
Необходимые для работы веб-сайта

Используются для входа, навигации и защиты (например: sessionid, csrftoken). Без них сайт может работать с перебоями.

Помогают улучшить сайт, собирая статистику посещений (например, через Яндекс Метрику).

Используются для показа персонализированной рекламы и ретаргетинга в рекламных сетях.

Настройки интерфейса

Декоративный эффект свечения при клике по странице.

DEV -
PROGRAM.RU
Контакты

HTTP-методы: GET, POST, PUT, PATCH, DELETE

Что такое HTTP-методы и для чего они нужны? Разбираем GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS, CONNECT и TRACE, их назначение, отличия и примеры

HTTP-методы API

При взаимодействии клиента и сервера важно не только указать, к какому ресурсу необходимо обратиться, но и какое действие требуется выполнить.

В этой статье рассмотрим специальные методы в HTTP.

Что такое HTTP-методы

HTTP-методы (HTTP Methods) это специальные обозначения, которые указывают на предполагаемое действие клиента по отношению к ресурсу.

Метод является частью стартовой строки HTTP-запроса и определяет его основную семантику.

В HTTP определено несколько стандартных методов, каждый из которых имеет своё назначение и особенности поведения.

Основные HTTP-методы

HTTP-метод GET

Метод GET используется для получения представления ресурса.

Метод GET не предназначен для изменения состояния ресурса на сервере.

GET /api/users/15 HTTP/1.1
Host: example.com
Accept: application/json

пример HTTP запроса с методом GET

Сервер может вернуть информацию о пользователе:

GET /api/users/15 HTTP/1.1
Host: example.com
Accept: application/json

пример HTTP ответа на метод GET

Основные особенности GET:

  • используется для получения данных

  • не должен изменять состояние ресурса на сервере

  • является безопасным (Safe)

  • является идемпотентным (Idempotent)

  • может кэшироваться при соблюдении соответствующих условий

GET часто используется для получения списков, отдельных записей, информации о товарах и других ресурсов.

HTTP-метод POST

Метод POST используется для передачи данных ресурсу с целью выполнения определённой операции.

Метод POST часто применяется для создания новых ресурсов, но его назначение этим не ограничивается.

POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "name": "Иван",
  "email": "ivan@example.com"
}

пример HTTP POST запроса для создания пользователя

POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "name": "Иван",
  "email": "ivan@example.com"
}

пример HTTP ответа создания пользователя

Основные особенности POST:

  • используется для отправки данных на сервер

  • обычно применяется для создания ресурсов

  • может запускать определённые операции или бизнес-процессы

  • не является безопасным

  • не является идемпотентным по умолчанию

POST также используется для отправки форм, оформления заказов, авторизации и выполнения других операций.

HTTP-метод PUT

Метод PUT используется для создания или полной замены представления ресурса по указанному адресу.

Если ресурс существует, сервер обычно заменяет его текущее представление переданными данными.

Если ресурса нет, сервер может создать его, если это допускается реализацией.

PUT /api/users/15 HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "name": "Пётр",
  "email": "petr@example.com"
}

пример HTTP PUT запроса изменения пользователя

В примере выше клиент передаёт новое представление пользователя с идентификатором 15.

Основные особенности PUT:

  • используется для создания или полной замены ресурса

  • является идемпотентным

  • не является безопасным

  • повторная отправка одинакового запроса должна приводить к тому же предполагаемому результату, что и первая

PUT обычно предполагает полную замену представления ресурса, а не только некоторых полей.

HTTP-метод PATCH

Метод PATCH используется для частичного изменения ресурса.

В отличие от PUT, который обычно применяется для полной замены объекта, PATCH позволяет передать только те данные, которые необходимо изменить.

Пример:

PATCH /api/users/15 HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "name": "Пётр"
}

пример HTTP PATCH запроса изменения поля пользователя

В этом примере клиент изменяет только имя пользователя.

Остальные поля ресурса могут остаться без изменений.

Основные особенности PATCH:

  • используется для частичного изменения ресурса

  • не является безопасным

  • не является идемпотентным по умолчанию

  • семантика изменения зависит от формата передаваемых данных

Например, повторное применение операции увеличения баланса на определённую сумму может приводить к разным результатам.

При этом PATCH вполне может быть реализован и идемпотентным, если конкретная операция и формат запроса это обеспечивают.

HTTP-метод DELETE

Метод DELETE используется для удаления связи между ресурсом и его текущей функциональностью в рамках целевого адреса (URI).

На практике чаще всего применяется для удаления ресурса.

DELETE /api/users/15 HTTP/1.1
Host: example.com

пример HTTP DELETE запроса удаления пользователя

Основные особенности DELETE:

  • используется для удаления ресурса

  • не является безопасным

  • является идемпотентным

  • повторный запрос DELETE не должен приводить к дополнительному изменению состояния по сравнению с первым успешным удалением

Код ответа на повторные запросы могут отличаться: первый может вернуть 204 No Content, а следующий 404 Not Found.

HTTP-метод HEAD

Метод HEAD работает аналогично GET, но сервер возвращает только заголовки ответа без тела сообщения.

HEAD /api/users/15 HTTP/1.1
Host: example.com

пример HTTP HEAD запроса к ресурсу

Основные особенности HEAD:

  • позволяет получить метаданные ресурса

  • не возвращает тело ответа

  • является безопасным

  • является идемпотентным

  • может использоваться для проверки доступности ресурса или получения информации о его представлении

Например, HEAD может применяться для проверки размера файла или даты его последнего изменения.

HTTP-метод OPTIONS

Метод OPTIONS используется для получения информации о возможностях взаимодействия с сервером или конкретным ресурсом.

OPTIONS /api/users HTTP/1.1
Host: example.com

пример HTTP OPTIONS запроса к ресурсу

Заголовок Allow указывает методы, поддерживаемые ресурсом.

Основные особенности OPTIONS:

  • позволяет узнать поддерживаемые возможности взаимодействия

  • является безопасным

  • является идемпотентным

  • используется в механизме CORS для предварительных запросов (Preflight)

HTTP-метод CONNECT

Метод CONNECT используется для установления туннеля между клиентом и сервером через промежуточный узел.

Наиболее распространённый пример это создание защищённого HTTPS-соединения через HTTP-прокси.

CONNECT example.com:443 HTTP/1.1
Host: example.com:443

пример HTTP CONNECT запроса

После успешного установления туннеля данные передаются через него без дальнейшей интерпретации HTTP-прокси.

CONNECT обычно используется в инфраструктуре прокси-серверов и не является типичным методом для работы с REST API.

HTTP-метод TRACE

Метод TRACE используется для диагностики передачи запроса по цепочке промежуточных компонентов.

Сервер возвращает полученное сообщение в теле ответа, позволяя увидеть, как запрос обрабатывался на пути к серверу.

TRACE / HTTP/1.1
Host: example.com

пример HTTP TRACE запроса

Основные особенности:

  • предназначен для диагностики

  • является безопасным

  • является идемпотентным

  • часто отключается на серверах из соображений безопасности

TRACE практически не используется в повседневной разработке API.

Безопасные и идемпотентные HTTP-методы

При работе с HTTP важно понимать два понятия: безопасность (Safe) и идемпотентность (Idempotent).

Они определяют особенности поведения методов и помогают правильно проектировать взаимодействие клиента и сервера.

HTTP Безопасные методы (Safe Methods)

Безопасными называются методы, которые по своей семантике предназначены только для получения информации и не должны инициировать изменение состояния ресурса на сервере.

Например, GET позволяет получить информацию о пользователе, но не должен изменять его имя, электронную почту или другие данные.

К безопасным методам относятся:

  • GET

  • HEAD

  • OPTIONS

  • TRACE

Безопасный метод не означает, что сервер вообще бездействует, он свободен собирать статистику и выполнять другие внутренние действия, главное не менять объект к которому обратились.

Идемпотентные методы (Idempotent Methods)

Идемпотентность означает, что повторяя запросы много раз, результат такой же, как при одном запросе.

К идемпотентным методам относятся:

  • GET

  • HEAD

  • PUT

  • DELETE

  • OPTIONS

  • TRACE

POST и PATCH не являются идемпотентными по умолчанию.

DELETE /api/users/15 HTTP/1.1
Host: example.com

пример повторной отправки запроса с удалением пользователя

При идемпотентности на пример выше удаления пользователя, повторный запрос не должен приводить к дополнительному удалению данных после того, как ресурс уже удалён.

При этом ответы сервера могут отличаться.

Идемпотентность относится к эффекту операции, а не к идентичности HTTP-ответов.

Сравнение HTTP-методов

таблица сравнения HTTP методов
МетодНазначениеБезопасныйИдемпотентный
GETПолучение данныхДаДа
POSTОтправка данных, выполнение операцииНетНет
PUTСоздание или полная замена ресурсаНетДа
PATCHЧастичное изменение ресурсаНетДа/Нет
DELETEУдаление ресурсаНетДа
HEADПолучение заголовков без тела ответаДаДа
OPTIONSПолучение информации о возможностяхДаДа
CONNECTУстановление туннеляНетНет
TRACEДиагностика передачи запросаДаДа

Если у вас остались вопросы по HTTP методам, вы можете обратиться за консультацией к программисту.

Вам может быть интересно

Поделиться
Ничего не найдено
Найдите нужную страницу

Статьи, инструменты и помощь