← Назад к вопросам

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

1.3 Junior🔥 211 комментариев
#Тестирование API

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Различия между POST, PUT и PATCH HTTP методами

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

POST — создание нового ресурса

POST используется для создания нового ресурса на сервере. Это небезопасный и не-идемпотентный метод:

  • Каждый запрос создаёт новый ресурс с уникальным ID
  • Повторение одного и того же запроса несколько раз создаст несколько одинаковых ресурсов
  • Сервер определяет, где будет размещён ресурс (обычно возвращает 201 Created и Location заголовок)
  • URL не содержит ID создаваемого ресурса

Пример:

POST /api/v1/users
Body: {"name": "Ivan", "email": "ivan@example.com"}
Результат: 201 Created, возвращает {"id": 123, "name": "Ivan", ...}

PUT — полная замена ресурса

PUT используется для полной замены существующего ресурса целиком. Это идемпотентный метод:

  • Заменяет весь ресурс на новые данные
  • Все поля должны быть переданы в запросе (если поле не передано, оно может быть удалено или установлено в null)
  • Повторение одного и того же PUT запроса дает одинаковый результат
  • URL содержит ID ресурса
  • Обычно возвращает 200 OK или 204 No Content

Пример:

PUT /api/v1/users/123
Body: {"id": 123, "name": "Ivan Petrov", "email": "ivan.petrov@example.com", "age": 30}
Результат: ресурс полностью заменён

PATCH — частичное обновление

PATCH используется для частичного обновления ресурса. Это идемпотентный метод (в идеальном случае):

  • Обновляет только переданные поля, остальные остаются без изменений
  • Более экономичен (передаётся только изменённые данные)
  • Не требует передачи всех полей ресурса
  • URL содержит ID ресурса
  • Обычно возвращает 200 OK с обновлённым ресурсом

Пример:

PATCH /api/v1/users/123
Body: {"email": "new.email@example.com"}
Результат: только email обновлён, остальные данные без изменений

Сравнительная таблица

КритерийPOSTPUTPATCH
НазначениеСозданиеПолная заменаЧастичное обновление
ИдемпотентностьНетДаДа
ID в URLНетДаДа
Необходимость всех полейЗависитДаНет
Код ответа201 Created200 OK / 204200 OK
Повторение запросаСоздаст дублиОдинаковый результатОдинаковый результат

Практические советы для QA

При тестировании API:

  • Проверяй коды ответов: POST должен вернуть 201, PUT/PATCH — 200 или 204
  • Тестируй идемпотентность: запусти PUT/PATCH дважды, результат должен быть идентичным
  • Проверяй обработку неполных данных: PUT должен либо отклонить запрос, либо установить значения по умолчанию; PATCH должен принять частичные данные
  • Проверяй, что не передано ненужных полей: убедись, что сервер правильно игнорирует неизвестные поля
  • Используй правильный метод в своих тестах: это влияет на проверку корректности API реализации

Понимание этих различий критично для написания качественных API тестов и выявления ошибок сервера.