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中使用了它。