我想知道当您拥有包含子资源列表的资源时哪种是最佳实践。例如,您有资源作者,其中包含姓名、ID、生日和书籍列表等信息。此图书列表仅与作者相关。所以,你有以下场景:
解决方案1
我搜索了哪个是正确的设计,发现了多种方法。我想知道是否有一个标准的设计方法。我觉得书上的设计说有以下几个方法:
POST /authors/{authorId}/book/PUT /authors/{authorId}/book/{bookId}DELETE /authors/{authorId}/book/{bookId}解决方案2
我的解决方案是只有一个 PUT 方法可以完成所有这三件事,因为书籍列表仅存在于对象作者内部,而您实际上正在更新作者。就像是:
PUT /authors/{authorId}/updateBookList(并将整个更新的书籍列表发送到作者对象内)
我发现我的场景中有多个错误。例如,从客户端发送更多数据、在客户端上有一些逻辑、对 API 进行更多验证以及依赖客户端拥有最新版本的图书列表。
我的问题是:这样做是反模式吗?
情况 1. 在我的情况下,我的 API 使用另一个 API,而不是数据库。使用的 API 只有一种“updateBookList”方法,因此我猜测在我的 API 中复制此行为也更容易。是否也正确呢?
情况 2。但是,假设我的 API 将使用数据库,那么使用解决方案 1 是否更合适?
另外,如果您可以提供一些可以找到类似信息的文章、书籍。我知道这种设计并不是一成不变的,但一些指导方针会有所帮助。(示例:摘自 REST API 设计规则手册 - Masse - O'Reilly)