← Назад к вопросам
В чем разница между 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 обновлён, остальные данные без изменений
Сравнительная таблица
| Критерий | POST | PUT | PATCH |
|---|---|---|---|
| Назначение | Создание | Полная замена | Частичное обновление |
| Идемпотентность | Нет | Да | Да |
| ID в URL | Нет | Да | Да |
| Необходимость всех полей | Зависит | Да | Нет |
| Код ответа | 201 Created | 200 OK / 204 | 200 OK |
| Повторение запроса | Создаст дубли | Одинаковый результат | Одинаковый результат |
Практические советы для QA
При тестировании API:
- Проверяй коды ответов: POST должен вернуть 201, PUT/PATCH — 200 или 204
- Тестируй идемпотентность: запусти PUT/PATCH дважды, результат должен быть идентичным
- Проверяй обработку неполных данных: PUT должен либо отклонить запрос, либо установить значения по умолчанию; PATCH должен принять частичные данные
- Проверяй, что не передано ненужных полей: убедись, что сервер правильно игнорирует неизвестные поля
- Используй правильный метод в своих тестах: это влияет на проверку корректности API реализации
Понимание этих различий критично для написания качественных API тестов и выявления ошибок сервера.