用于"激活"的RESTful URL

Net*_*eta 6 api rest url http

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

现在我正在考虑/projects/:id/activate和/projects/:id/deactivate,但我不认为这非常RESTful.
另外,我不确定使用什么HTTP方法.

你能提供一些指示吗?
谢谢!

kav*_*kav 7

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

PATCH /projects/123

[
    { "op": "activate|deactivate", ... }
]
Run Code Online (Sandbox Code Playgroud)

阅读更多内容:REST API - 使用现实生活中的PUT与PATCH


Mat*_*ans 6

最常规的方法是通过POST到/ projects /:id,使用参数指示是要激活还是取消激活或其他东西(总是为其他东西留出空间).

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

  • PUT:创建或替换东西
  • PATCH:设置事物的属性
  • POST:对事物执行操作
  • GET:检索东西
  • 删除:删除该东西


mic*_*cha 6

我知道我有点晚了,但也许这对其他人有用。

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

现在您可以在此子资源上使用POST和DELETE。

例如:

POST /projects/:id/activation       <-- activate project
DELETE /projects/:id/activation     <-- deleting the activation = deactivate
Run Code Online (Sandbox Code Playgroud)

这种模式对于在某物的开/关状态之间切换的操作非常有效。