REST API с обновлением реляционных ресурсов Spring Boot - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь создать REST API с ресурсами, связанными с другими, и теперь я сталкиваюсь с проблемой обновления этих вложенных ресурсов.

У меня есть два типа отношений. Во-первых, вложенный объект тесно связан с другим и нигде не используется, а другой тип заключается в том, что вложенный объект использует отдельно.

Методы GET, PUT, DELETE соответствующего ресурса уже есть в основных контроллерах, так как это стандарт REST.

Я не знаю, как лучше реализовать обновление REST для этих связанных объектов. Обновление связанного объекта должно полагаться на родительские службы или их собственные?

Я подумал, что если реляционный класс никогда не используется отдельно, не обязательно создавать для него отдельный сервис и контроллер, потому что он используется только в композиции со своим классом-владельцем, и все манипуляции должны выполняться через родительский контроллер, и наоборот, если он используется отдельно, должен иметь свой собственный контроллер, сервис и т. д.

class Foo {
   private Bar bar;
}

class Bar {
 private String someAttr;
}

Итак, метод обновления для атрибута bar в классе Foo должен быть в FooController?

 class FooController {

   //... GET, PUT, DELETE implementations

   @PatchMapping("/{fooId}/bar")
   public ResponseEntity<Bar> update(@PathVariable Long fooId, @RequestBody Bar bar){
     fooService.updateBar(fooId, bar);
   }
 }

Или это должно быть отдельно, а для обновления сущности следует использовать BarController?


    class FooController {

   //... GET, PUT, DELETE implementations without update method that was shown below
    }

 class BarController {

   //... GET, PUT, DELETE implementations

   @PatchMapping("/bars")
   public ResponseEntity<Bar> update(@RequestBody Bar bar){
     barService.update(bar);
   }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...