带有Spring Boot关系资源更新的REST API

时间:2019-05-11 20:33:22

标签: java rest spring-boot spring-data-jpa

我尝试使用与他人有联系的资源来创建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);
   }
 }

0 个答案:

没有答案