RESTful URL for“ Activate”

问题描述 投票:8回答:3

我有一个可以激活和停用的资源(project)。为此目的,最RESTful URL端点是什么?

现在,我正在考虑/projects/:id/activate/projects/:id/deactivate,但我认为这不是非常RESTful。另外,我不确定要使用哪种HTTP方法。

您能提供一些提示吗?谢谢!

api rest http url
3个回答
7
投票

您可以将请求仅发送到projects/{id}并使用PATCH(在更新现有对象时)动词,例如

PATCH /projects/123

[
    { "op": "activate|deactivate", ... }
]

阅读更多:REST API - PUT vs PATCH with real life examples


8
投票

最传统的方式是通过POST到/ projects /:id,其中的参数指示您是要激活还是要停用或进行其他操作(总是为其他操作留出空间)。

请注意,RESTful URL应该引用事物(例如项目),而不是操作。那么常用的方法有明确的含义:

  • PUT:创建或替换事物
  • PATCH:设置事物的属性
  • POST:在事物
  • 获取:检索东西
  • 删除:删除事物

0
投票

我知道我来晚了一些,但也许对其他人有用。

您可以从您的操作中创建一个名词并将其用作子资源:activate -> activation

现在您可以在此子资源上使用POSTDELETE

例如:

POST /projects/:id/activation       <-- activate project
DELETE /projects/:id/activation     <-- deleting the activation = deactivate

此模式对于在打开/关闭某物的状态之间进行切换的操作非常有效。

© www.soinside.com 2019 - 2024. All rights reserved.