Ответ
Для обновления ресурса в REST API используются методы PUT и PATCH.
PUT (Полное обновление)
- Семантика: «Заменить ресурс целиком» данными из запроса.
- Идемпотентность: Да. Многократный одинаковый PUT-запрос дает тот же результат.
- Использование: Клиент должен отправить полное представление ресурса, даже для неизменяемых полей.
Пример PUT в Spring Boot:
@PutMapping("/books/{id}")
public ResponseEntity<Book> updateBook(
@PathVariable Long id,
@RequestBody Book updatedBook) {
// Заменяем весь ресурс с указанным ID данными из updatedBook
Book savedBook = bookService.saveOrUpdate(id, updatedBook);
return ResponseEntity.ok(savedBook);
}
PATCH (Частичное обновление)
- Семантика: «Применить частичные модификации к ресурсу».
- Идемпотентность: Не гарантирована (зависит от формата запроса, например, JSON Patch идемпотентен).
- Использование: Клиент отправляет только изменяемые поля или набор операций для изменения.
Пример PATCH (обновление одного поля) в Spring Boot:
@PatchMapping("/books/{id}/title")
public ResponseEntity<Void> updateBookTitle(
@PathVariable Long id,
@RequestParam String newTitle) {
bookService.updateTitle(id, newTitle);
return ResponseEntity.noContent().build();
}
Ключевое отличие: PUT обновляет ресурс полностью, PATCH — частично. Выбор зависит от требований API и желаемой семантики.