← Назад к вопросам
В чем разница между POST, PUT и PATCH?
1.6 Junior🔥 211 комментариев
#API тестирование#Сети и протоколы
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Разница между POST, PUT и PATCH
Это три основных HTTP-метода для создания и изменения данных на сервере, каждый из которых используется для разных целей.
POST — создание новых ресурсов
POST используется для создания нового ресурса на сервере. При отправке POST-запроса сервер создаёт новый ресурс и обычно возвращает его с присвоенным ID.
POST /api/v1/users HTTP/1.1
Content-Type: application/json
{
"name": "John Doe",
"email": "john@example.com"
}
Особенности:
- Не идемпотентен (повторные запросы создают новые ресурсы)
- Результат зависит от реализации сервера
- Часто возвращает 201 Created
PUT — полное обновление ресурса
PUT заменяет весь ресурс по идентификатору. Нужно передать полные данные ресурса целиком.
PUT /api/v1/users/123 HTTP/1.1
Content-Type: application/json
{
"name": "Jane Doe",
"email": "jane@example.com",
"age": 30
}
Особенности:
- Идемпотентен (повторный запрос даёт одинаковый результат)
- Заменяет весь ресурс полностью
- Если ресурс не существует, может его создать (206 или 201)
PATCH — частичное обновление ресурса
PATCH обновляет только переданные поля ресурса, остальные остаются без изменений.
PATCH /api/v1/users/123 HTTP/1.1
Content-Type: application/json
{
"name": "Jane Smith"
}
Особенности:
- Может быть идемпотентен или не быть (зависит от реализации)
- Обновляет только указанные поля
- Более гибкий и экономный по трафику
Сравнительная таблица
| Метод | Назначение | Идемпотентен | Тело запроса |
|---|---|---|---|
| POST | Создание | Нет | Обязательно |
| PUT | Полное обновление | Да | Все поля |
| PATCH | Частичное обновление | Зависит | Только изменяемые |
Практические примеры для тестирования
При автоматизации тестирования API нужно проверять:
- POST: создание с валидными данными, обработка ошибок валидации, проверка ID
- PUT: полное обновление, отсутствие поля = удаление или ошибка, идемпотентность
- PATCH: частичное обновление, сохранение неизменённых полей, обработка конфликтов
Выбор метода важен не только для правильности API, но и для написания эффективных и надёжных тестов.