阅读REST协议我已经看到GET调用不应该更新服务器/应该是幂等的,所以我想:如果我想要保存用户搜索(由GET调用发出)怎么办?我的结论是,因为它是一个幂等操作(首先和N保存对服务器有相同的效果),在这种情况下,GET调用可以修改服务器数据。
我是对的吗?
由于
答案 0 :(得分:1)
如果我希望保存用户搜索(由GET调用发出),该怎么办?
当然,请继续前进。
我的结论是,因为它是一个幂等操作(首先和N保存对服务器具有相同的效果),在这种情况下,GET调用可以修改服务器数据。
你的结论很好,你的推理有点软。
Roy Fielding,writing in 2002
HTTP不会尝试要求GET的结果是安全的。什么 它确实要求操作的语义是安全的,并且 因此它是实现的错误,而不是接口 或该接口的用户,如果发生任何结果 导致财产损失(金钱,BTW,被视为财产 这个定义的缘故)。
这里的关键思想是语义区别:HTTP统一接口定义GET为safe
如果请求方法的定义语义基本上是只读的,则被视为“安全”;即,作为对目标资源应用安全方法的结果,客户端不请求并且不期望源服务器上的任何状态改变。同样,合理使用安全方法预计不会对原始服务器造成任何伤害,财产损失或异常负担。
服务器可以按照自己喜欢的方式处理请求(例如,记录所有这些请求)。