REST API:对资源执行/撤消操作的最佳方式

时间:2014-08-27 08:24:28

标签: rest api-design

注意:我在此考虑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方法发送数据,因此我必须在网址中传递user_id

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

1 个答案:

答案 0 :(得分:2)

使用布尔值并不是很清楚。我可以认为它是一个非显而易见的论证。考虑到API解释最明显,你的语法最好。

最后,使用DELETE方法是您可以选择的最佳选项。将用户分配给公司时,可以创建关系。如果要取消分配,则删除该关系。