Api “的RESTful URL;激活";
我有一个资源(Api “的RESTful URL;激活";,api,rest,http,url,Api,Rest,Http,Url,我有一个资源(项目),可以激活和停用。 出于这个目的,什么是最RESTful的URL端点 现在我考虑的是/projects/:id/激活和/projects/:id/停用,但我认为这不是很安静。 此外,我不确定使用什么HTTP方法 你能提供一些建议吗? 谢谢 最常用的方法是通过POST to/projects/:id,参数指示您是否要激活或停用或其他内容(始终为其他内容留出空间) 请注意,RESTful URL应该引用对象(如项目),而不是操作。那么常用的方法就有了明确的含义: 放置:创建或替
项目
),可以激活和停用。出于这个目的,什么是最RESTful的URL端点 现在我考虑的是
/projects/:id/激活和/projects/:id/停用
,但我认为这不是很安静。
此外,我不确定使用什么HTTP方法
你能提供一些建议吗?
谢谢 最常用的方法是通过POST to/projects/:id,参数指示您是否要激活或停用或其他内容(始终为其他内容留出空间)
请注意,RESTful URL应该引用对象(如项目),而不是操作。那么常用的方法就有了明确的含义:
- 放置:创建或替换对象
- 补丁:设置事物的属性
- POST:在服务器上执行操作
东西
- 获取:检索该对象
- 删除:删除这个东西
您可以将请求发送到项目/{id}
并使用补丁
(当您更新现有对象时)动词,例如
PATCH /projects/123
[
{ "op": "activate|deactivate", ... }
]
阅读更多内容:我知道我有点晚了,但这可能对其他人有用
您可以从操作中创建一个名词,并将其用作子资源:activate->activation
现在,您可以在此子资源上使用POST
和DELETE
例如:
POST /projects/:id/activation <-- activate project
DELETE /projects/:id/activation <-- deleting the activation = deactivate
POST/projects/:id/activation我想我会使用PATCH
,因为我已经在为这个资源使用POST
,而且我不想有一条庞大的路线(使用Node.js和Express)。谢谢一个小的后续问题:如果项目还没有准备好激活,返回什么HTTP代码?202-Accepted
,意思是“请求已被接受处理,但处理尚未完成”。这很好,但如果我想向客户表示:“项目还没有准备好,因为您还没有更新它”?为了我自己的方便,决定使用补丁
。谢谢你的回答!GitHub使API消费者能够通过PUT请求实现这一点,文档可以在上看到。我们还成功地在多个API中使用了它。