【发布时间】:2020-01-25 15:55:17
【问题描述】:
编码新手,对路线结构而不是实际编码有疑问。我将使用下面的图书馆和图书网络应用示例来澄清我的问题。
我想创建一个新库: POST 库路由。
我想更新库名称: PUT 库/libraryId 路由。
我想创作一本新书。 发布书籍
我想更新书名。 放置书籍/bookId
我正在我的单页应用中查看图书馆中的图书列表。有一个表格可以将新书添加到图书馆。
表单应该走哪条路线符合 RESTful 路由或无关紧要?
- 表格帖子到新书路线,然后更新图书馆: POST /books/libraryId
或
- 表单 PUT 到更新库路径并在该路径中创建新书: PUT /library/libraryId/newbookname
编辑:基于以下 cmets 的一些说明.. 所以在我的场景中,用户可以在图书馆之外创建新书,但他们不能分配给图书馆。图书管理员管理图书馆,因此可以创建新书,这些新书会自动添加到他们的图书馆中。
【问题讨论】:
-
如果您的应用不允许单独添加书籍,并且您只能在图书馆中添加新书籍,那么拥有两个单独的端点 (POST+PUT) 是没有意义的。您可以通过一个 API 调用来做到这一点,我认为该调用将遵循以下顺序:创建一本新书 --> 将其添加到适当的图书馆:如果在将书添加到图书馆时出现问题 --> 新创建的书必须被删除以避免混淆。如果您可以单独添加书籍,然后将它们分配给图书馆,那么您可以按照相同的步骤操作:添加一本书 --> 分配给图书馆
-
很抱歉在超时之前没有完成我的编辑。所以在我的场景中,用户可以在图书馆之外创建新书,但他们不能分配给图书馆。图书馆员管理图书馆,因此可以创建新书,这些新书会自动添加到他们的图书馆中。这会改变你的看法吗?
-
这真的取决于你的数据库结构和你的应用程序是如何设计的。您可以按照您所描述的两种方式进行操作。在我看来,您仍然必须创建新书,并且只有当该调用成功时,您才会使用新创建的书 ID 调用更新库根来更新您的库。因此,最终您将拥有两个独立的端点,您将一个接一个地调用它们(POST
--> PUT ) -
这很有帮助。非常感谢。
标签: node.js rest post routes put