如何在API中管理GET方法

时间:2016-01-21 17:29:06

标签: api rest http

我正在开发一个API,审查有关HTTP方法的文档,它说“GET”不应该修改资源的状态。如果我想计算查看资源的次数并将其返回给响应,该怎么办?

这样的东西
GET /resource/1
{
   "content": "This is the resource 1",
   "view_count": 1
}

在下一个电话中,它会返回:

GET /resource/1
{
   "content": "This is the resource 1",
   "view_count": 2
}

我是否违反了一些规定?

2 个答案:

答案 0 :(得分:2)

我认为,如果你说view_count不是资源本身的一部分,那么view_count在使用GET时得到更新的事实并没有太大的违规。这只是一些额外的数据。您甚至可以修改您的请求以反映这一点。像GET /resource/1?include=view_count这样的东西。我认为有些人称之为资源扩张。

答案 1 :(得分:0)

虽然最好不要使用GET请求修改资源的状态,但我认为您的用例可以作为例外。我真的想不出另一种甚至可以实现的方式。

编辑:

有人声明(在删除评论之前)API用户应在每次PATCH请求之前使用GET请求,以使view_count保持最新状态。

我看到这种方法的问题是view_count会变得不可靠,因为您依靠API用户来保持最新状态。

想象一下,如果网络用户每次访问网页时都必须向Google Analytics提交请求...