【发布时间】:2015-01-13 04:19:33
【问题描述】:
我很难思考如何为子资源建模。
以有作者的书籍为例。您可以拥有 N 本书,每本书只有一位作者。
/books GET
/books POST
/books/id PUT
/books/id DELETE
到目前为止很容易。
给一本书添加作者怎么样。至少在这个例子中删除了每本书只有一个作者
/books/id/author POST
这似乎让我感到困惑,因为 POST 通常意味着创建。在已经设置作者的情况下,api 的用户可能会认为他们只是在创建新作者,而实际上他们正在删除旧作者并用新作者替换它。
这让我有了
/books/id/author PUT
意思是更新那本书的作者资源。有点意思。但是第一次没有作者存在怎么办?不是真正的更新,而是最初的创建?也许只是想它就是更新一个零作者。
这甚至应该是子资源吗?这将是一个复杂的对象,所以有点道理。虽然我猜你不可能有没有作者的书。所以我不应该建模为子资源并说您在创建或修改图书资源时传递了作者对象。
最后的想法。我不认为我会将作者建模为根资源。所以至少在这种情况下,它们只会存在于书籍资源下。同样,每本书只有一位作者。
【问题讨论】:
-
"但是第一次没有作者的时候呢?" --- 它仍然是语义的。
PUT只是将数据放入资源中,无论它是否存在。
标签: rest http restful-url