RESTAPI:对资源执行/撤消操作的最佳方法 注意:这里我认为代码> POST 的意思是“创建”和“代码>放置”意思是“更新”,就像GITHUB那样。这不是支持POST或PUT的地方

RESTAPI:对资源执行/撤消操作的最佳方法 注意:这里我认为代码> POST 的意思是“创建”和“代码>放置”意思是“更新”,就像GITHUB那样。这不是支持POST或PUT的地方,rest,api-design,Rest,Api Design,我有一个公司资源和一个分配操作。我想知道如何在RESTAPI中转换这种行为 我想到了这样的事情: PUT /company/:id/assign user_id: 5 如果我想取消分配该用户,该怎么办 我应该使用布尔值作为参数吗 我应该使用取消分配操作吗 我应该使用另一个HTTP动词吗 在最新的GitHub API上,我了解了如何: 为什么不,但如何: 我觉得很奇怪。您正在更新资源上的操作,并删除它。奇怪的我能理解是POST而不是PUT POST/gists/:id/star和DELETE

我有一个
公司
资源和一个
分配
操作。我想知道如何在RESTAPI中转换这种行为

我想到了这样的事情:

PUT /company/:id/assign
user_id: 5
如果我想取消分配该用户,该怎么办

  • 我应该使用布尔值作为参数吗
  • 我应该使用
    取消分配
    操作吗
  • 我应该使用另一个HTTP动词吗
在最新的GitHub API上,我了解了如何:

为什么不,但如何:

我觉得很奇怪。您正在更新资源上的操作,并删除它。奇怪的我能理解是
POST
而不是
PUT

POST/gists/:id/star
DELETE/gists/:id/star
对我来说似乎更符合逻辑。你觉得怎么样

编辑:我将使用
POST
DELETE
。但由于无法使用
DELETE
方法发送数据,我必须在URL中传递
用户id

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

使用布尔值不是很清楚。我可以认为这是一个不明显的论证术语。考虑到API解释最明显,你的语法最好。
最后,使用DELETE方法是您可以选择的最佳选项。将用户分配给公司时,您将创建一个关系。要取消分配时,删除关系。

+1,
POST/assignments{user:id,company:id}->201 id
仅此而已。Assign是一个操作名,而不是资源名。。。
DELETE /gists/:id/star
POST /company/:id/assign/:user_id
DELETE /company/:id/assign/:user_id