我的应用程序管理用户可以订阅的电子邮件活动。
这些活动可以是开放式的,也可以是封闭式的。
如果我想结束一个活动,我可以这样做:
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 的方法是什么?
如果您尝试使用更通用的 GET 或 POST 来更新属性,那么您必须在 url 中包含更多信息或作为 url 中的参数来告诉您的代码这是一个更新操作,因为您没有使用PATCH 或其他动词。
POST /campaigns/<campaignId>/UpdateStatus
(pass in body that has new status)
GET /campaigns/<campaignId>/UpdateStatus?NewStatus=CLOSED
类似上面的东西 - REST 纯粹主义者会说这不是一个好的 REST 做法。