Ответ
PATCH и PUT — это HTTP-методы для обновления ресурсов, но с фундаментальным отличием в семантике.
| Аспект | PUT | PATCH |
|---|---|---|
| Семантика | Полная замена. Клиент отправляет новое представление ресурса целиком. | Частичное обновление. Клиент отправляет только изменяемые поля. |
| Идемпотентность | Да. Многократный вызов с одними данными дает тот же результат. | Не гарантируется. Зависит от реализации операции на сервере. |
| Использование | Когда известны все атрибуты ресурса. | Когда нужно обновить 1-2 поля, не затрагивая остальные. |
Пример запроса PATCH:
PATCH /api/v1/users/123 HTTP/1.1
Host: example.com
Content-Type: application/json
Authorization: Bearer <token>
{
"email": "new.email@example.com"
}
Ожидаемый ответ (200 OK):
{
"id": 123,
"username": "john_doe",
"email": "new.email@example.com",
"role": "user"
}
Ключевые моменты для тестирования API:
- Валидация: Сервер должен корректно обрабатывать частичные данные и возвращать ошибку (например,
422 Unprocessable Entity) при попытке обновить неизменяемые или несуществующие поля. - Безопасность: Проверять, что с помощью PATCH нельзя изменить поля, не предназначенные для обновления (например,
idилиis_admin), если это не разрешено политикой. - Документация: API должно четко указывать, какие поля можно обновлять с помощью PATCH.
- Сценарии: Тестировать отправку пустого тела запроса, некорректных типов данных и обновление несуществующего ресурса (должен вернуть
404 Not Found).