REST保存GET历史记录

时间:2017-12-27 16:48:18

标签: rest get

阅读REST协议我已经看到GET调用不应该更新服务器/应该是幂等的,所以我想:如果我想要保存用户搜索(由GET调用发出)怎么办?我的结论是,因为它是一个幂等操作(首先和N保存对服务器有相同的效果),在这种情况下,GET调用可以修改服务器数据。

我是对的吗?

由于

1 个答案:

答案 0 :(得分:1)

  

如果我希望保存用户搜索(由GET调用发出),该怎么办?

当然,请继续前进。

  

我的结论是,因为它是一个幂等操作(首先和N保存对服务器具有相同的效果),在这种情况下,GET调用可以修改服务器数据。

你的结论很好,你的推理有点软。

Roy Fielding,writing in 2002

  

HTTP不会尝试要求GET的结果是安全的。什么   它确实要求操作的语义是安全的,并且   因此它是实现的错误,而不是接口   或该接口的用户,如果发生任何结果   导致财产损失(金钱,BTW,被视为财产   这个定义的缘故)。

这里的关键思想是语义区别:HTTP统一接口定义GET为safe

  

如果请求方法的定义语义基本上是只读的,则被视为“安全”;即,作为对目标资源应用安全方法的结果,客户端不请求并且不期望源服务器上的任何状态改变。同样,合理使用安全方法预计不会对原始服务器造成任何伤害,财产损失或异常负担。

服务器可以按照自己喜欢的方式处理请求(例如,记录所有这些请求)。