Вопрос проверяет умение различать полное и частичное обновление ресурса в REST.
PUT заменяет весь ресурс новым представлением, а PATCH изменяет только указанные поля. PUT обычно идемпотентен, PATCH — может быть частично идемпотентен в зависимости от реализации.
PUT (полная замена)
Клиент отправляет полную модель ресурса.
Отсутствующие поля могут быть сброшены к значениям по умолчанию или удалены.
Идемпотентен: многократные вызовы — тот же результат.
PATCH (частичное обновление)
Клиент отправляет только изменённые поля.
Оставляет остальные данные без изменений.
Может использовать разные форматы (JSON-Patch, Merge Patch).
Пример JSON-Merge Patch
PATCH /users/123
Content-Type: application/merge-patch+json
{
"email": "new@example.com"
}заменяет только email, не трогая другие поля.
Когда применять:
PUT — когда нужен полный апдейт или при создании ресурса по известному URI.
PATCH — для экономии трафика и удобства частичных изменений.