Как правильно реализовать HTTP PATCH на Spring MVC? - PullRequest
0 голосов
/ 04 июня 2019

У меня есть требование для реализации метода HTTP PATCH в приложении Spring MVC. Я следовал этому уроку: https://www.baeldung.com/http-put-patch-difference-spring.

Это кусок кода:

@RequestMapping(value = "/heavyresource/{id}", method = RequestMethod.PATCH, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> partialUpdateGeneric(
  @RequestBody Map<String, Object> updates,
  @PathVariable("id") String id) {

    heavyResourceRepository.save(updates, id);
    return ResponseEntity.ok("resource updated");
}

Проблема в том, что в моем хранилище (JPARepository) нет метода «сохранить», где я могу передать карту и идентификатор.

Я попробовал эту реализацию самостоятельно:

@PatchMapping("/heavyresource/{id}")
public Beer patchUpdate(@RequestBody HeavyResource heavyResource) {

    return heavyResourceRepository.save(heavyResource);
}

Но это не работает должным образом, потому что, если я передаю только одно свойство (это точка в PATCH), все остальные свойства становятся нулевыми, и мне нужно обновить только переданное свойство. Даже думать в DTO я не смог реализовать.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...