【问题标题】:REST API: Best way to do/undo an action on a resourceREST API:对资源执行/撤消操作的最佳方式
【发布时间】:2014-10-20 18:01:52
【问题描述】:

注意:我认为这里POST 表示“创建”,PUT 表示“更新”,就像 GitHub 一样。这不是支持POSTPUT 的地方。

我有一个company 资源和一个assign 操作。我想知道如何在我的 REST API 中翻译这种行为。

我想过这样的事情:

PUT /company/:id/assign
user_id: 5

如果我想取消分配此用户怎么办?

  • 我应该使用布尔值作为参数吗?
  • 我应该使用unassign 操作吗?
  • 我应该使用另一个 HTTP 动词吗?

在最新的 GitHub API 上我看到了如何star a gist

PUT /gists/:id/star

为什么不呢,但是怎么unstar a gist:

DELETE /gists/:id/star

这对我来说似乎很奇怪。您正在更新对资源的操作并删除它。诡异的。我能理解是POST 还是PUT

POST /gists/:id/starDELETE /gists/:id/star 对我来说似乎更合乎逻辑。你怎么看?

编辑:我将与POSTDELETE 合作。但由于无法使用DELETE 方法发送数据,我必须在 URL 中传递user_id

POST /company/:id/assign/:user_id
DELETE /company/:id/assign/:user_id 

【问题讨论】:

    标签: rest api-design


    【解决方案1】:

    使用布尔值并不是很清楚。我可以将其视为一个不明显的论点术语。考虑到 API 解释越明显,语法越好。

    最后,使用 DELETE 方法是您可以选择的最佳选择。当您将用户分配给公司时,您会创建一个关系。当你想取消分配时,你删除关系。

    【讨论】:

    • +1, POST /assignments {user: id, company: id} -> 201 id 就是这样。 assign 是操作名称,而不是资源名称...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 2020-04-30
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多