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