Ответ
Метод PATCH предназначен для частичного обновления ресурса, в то время как PUT предполагает полную замену ресурса.
| Ключевые отличия: | Критерий | PUT | PATCH |
|---|---|---|---|
| Семантика | Замена всего ресурса | Частичное обновление ресурса | |
| Идемпотентность | Гарантируется (повторные запросы дают тот же результат) | Не гарантируется | |
| Объём данных | Обычно передаётся полное представление ресурса | Передаются только изменяемые поля |
Пример PATCH-запроса (JSON):
PATCH /api/users/123 HTTP/1.1
Content-Type: application/json
{
"email": "new.email@example.com"
}
Пример обработки в Spring Boot:
@PatchMapping("/users/{id}")
public ResponseEntity<User> partialUpdate(
@PathVariable Long id,
@RequestBody Map<String, Object> updates) {
User user = userRepository.findById(id).orElseThrow();
// Применяем только переданные поля
if (updates.containsKey("name")) {
user.setName((String) updates.get("name"));
}
if (updates.containsKey("email")) {
user.setEmail((String) updates.get("email"));
}
return ResponseEntity.ok(userRepository.save(user));
}
Когда использовать PATCH: При обновлении одного-двух полей большого ресурса для экономии трафика и предотвращения конфликтов при параллельном редактировании.