HTTP: В чем разница между POST, PUT и PATCH

Перед тем, как разобраться в отличиях между методами POST, PACH и PUT давайте изучим такое понятие, как идемпотентность. Что это?

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

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

К идемпотентным методам можно отнести: GET, HEAD, PUT и DELETE.

При проектировании API, стремятся сделать все методы идемпотентными. Почему и как это делается, отлично написано в блоге Яндекс на Хабре.

Вернемся к нашим трем методам. Основное отличие между POST и PUT в том, что второй является идемпотентным. При первом выполнении метода POST создастся новая запись. В случае PUT новая запись будет создана, если такого ресурса не существует. А если существует, то она будет обновлена.

PATCH также является не идемпотентным методом и при его выполнения могут быть различные побочные эффекты. Главное отличие от PUT в том, что PATCH может частично обновлять документ.

Подведем итоги:

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

Думаю, теперь вы с легкостью сможете выбрать нужный метод при проектировании API.

Об авторе

Дмитрий Ли

Катаюсь на велосипеде, фотографирую. Люблю RESTful и Linux, пишу для web, в основном на PHP.

Просмотреть все сообщения

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *