小编gre*_*een的帖子

用于从子资源列表中更新/添加/删除项目的 REST 设计

我想知道当您拥有包含子资源列表的资源时哪种是最佳实践。例如,您有资源作者,其中包含姓名、ID、生日和书籍列表等信息。此图书列表仅与作者相关。所以,你有以下场景:

  1. 您想要将一本新书添加到图书列表中
  2. 您想要更新列表中的一本书的名称
  3. 您想要从列表中删除一本书

解决方案1

我搜索了哪个是正确的设计,发现了多种方法。我想知道是否有一个标准的设计方法。我觉得书上的设计说有以下几个方法:

  1. 加上:POST /authors/{authorId}/book/
  2. 更新:PUT /authors/{authorId}/book/{bookId}
  3. 删除: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)

rest api-design http-verbs restful-url

8
推荐指数
2
解决办法
9579
查看次数

标签 统计

api-design ×1

http-verbs ×1

rest ×1

restful-url ×1