POST 或 GET 调用 REST 操作

问题描述 投票:0回答:1

我的应用程序管理用户可以订阅的电子邮件活动。
这些活动可以是开放式的,也可以是封闭式的。

如果我想结束一个活动,我可以这样做:

PATCH /campaigns/<campaignId>
Content-Type: application/json

{
  "status": "CLOSED"
}

但是执行此操作并在内部设置状态是正确的 REST 方法吗?

POST /campaigns/<campaignId>/close

既然主体已经消失了,我可以用 GET 请求替换它吗?

订阅活动的相同问题

我想做这个:

GET /campaigns/<campaignId>/subscribe/<userId>

但是应该是 POST 还是 GET 请求?

或者我应该这样做?

POST /campaigns/<campaignId>/subscribe
Content-Type: application/json

{
  "userId": <userId>
}

最 RESTful 的方法是什么?

api rest
1个回答
0
投票

如果您尝试使用更通用的 GET 或 POST 来更新属性,那么您必须在 url 中包含更多信息或作为 url 中的参数来告诉您的代码这是一个更新操作,因为您没有使用PATCH 或其他动词。

 POST /campaigns/<campaignId>/UpdateStatus
    (pass in body that has new status)

 GET /campaigns/<campaignId>/UpdateStatus?NewStatus=CLOSED

类似上面的东西 - REST 纯粹主义者会说这不是一个好的 REST 做法。

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