Luc*_*uke 3 java rest spring spring-mvc java-ee
我创建了以下实体Book,Chapter和Feedback.在Book有很多Chapter的实体,而且它也有很多Feedback的实体.由于没有任何Chapter实体可以通过他们自己生活,他们是组成的一部分Book.这同样适用于Feedback权利.
我的问题是作为组合的一部分的对象是否应该在RESTful系统中拥有自己的URI?如:
/books/1/chapters (With POST, DELETE, PUT operations)
/books/1/feedback (With POST, DELETE, PUT operations)
Run Code Online (Sandbox Code Playgroud)
或者它应该像这样被威胁:
/books/1 (With POST, DELETE, PUT operations only on the book)
Run Code Online (Sandbox Code Playgroud)
最后一个URI意味着API的用户必须向该书的数组添加反馈,然后更新整个书籍实体.
因为章节不属于任何其他对象并且它们的生命周期依赖于书籍,所以将书籍和章节之间的关系称为"构图+聚合"是否有意义?
我的问题是作为组合的一部分的对象是否应该在RESTful系统中拥有自己的URI
是的,绝对是.这使得它显著轻松地访问和管理的实体表示的特定部位时,这些部件可独立寻址.而不是要求客户端每次只更新它的一小部分来检索整个表示,而是只关注需要修改的一个部分.它还极大地简化了访问控制,其中某些端点可能对特定呼叫者可用,但对其他呼叫者不可用.
定义子资源URI时要保留的一个约束是它们始终在其父资源的范围内定义(正如您在示例中所示).
因为章节不属于任何其他对象并且它们的生命周期依赖于书籍,所以将书籍和章节之间的关系称为"构图+聚合"是否有意义
将关系称为组合是有意义的.聚合意味着子资源(章节)可能存在于其父(书)的范围之外,在这种情况下它不能.聚合的示例可以是地址,可以与人或组织相关联.