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动词吗
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