По определению метод PATCH применяет частичное обновление к данному ресурсу, в то время как метод PUT используется для замены данного ресурса полностью . Ключевым словом здесь является то, что и PATCH, и PUT указаны c для данного ресурса. Метод POST используется для создания нового ресурса.
Следовательно, имеет смысл, если вы хотите обновить только несколько полей в своем ресурсе, и вам не нужно его обновлять полностью, чтобы использовать метод PATCH вместо метода PUT.
Тело запроса PATCH описывает, как должен быть обновлен ресурс, с помощью ряда операций. Один из форматов, который вы можете использовать для описания этих операций, - это JSON Patch.
Поскольку операция PATCH специфицируется c для данного ресурса и с использованием библиотеки json -patch, ваш Метод контроллера должен выглядеть примерно так:
@PatchMapping("/{employeeId}/tasks/{taskId}")
public Task updateTask(@RequestBody JsonPatch taskPatch, @PathVariable Long employeeId, @PathVariable Long taskId) { ... }
Обратите внимание, что это отличается от POST, с другим методом (updateTask). Например, если вы хотите обновить одно поле из вашего ресурса задачи (заданного taskId), ваш jsonPatch, отправленный в теле запроса от вашего клиента (может быть Postman), будет выглядеть примерно так:
[{
"op":"replace",
"path":"/field",
"value":"newValue"
}]
различные операции, такие как добавление, удаление, замена, копирование и проверка.
Теперь в вашем коде вам нужно будет применить этот патч к существующему ресурсу. В этой справке показано, как это сделать:
https://www.baeldung.com/spring-rest-json-patch
Надеюсь, это поможет.