我正在开发一个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
}
我是否违反了一些规定?
答案 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提交请求...