如果缓存,GET请求仍然是幂等的吗?

时间:2016-01-05 16:24:15

标签: api get api-design idempotent

我的理解是,幂等请求不会改变任何东西。如果GET请求产生副作用(例如,将请求缓存到搜索端点),它仍然是幂等的吗?

2 个答案:

答案 0 :(得分:2)

要使一个行为是幂等的,你必须能够重复它而不会产生额外的副作用。

在您的具体示例中,如果GET请求导致从外部源获取数据,那么问题实际上是关于该源的幂等性,但是如果您提到搜索端点,则可能会出现这种情况。

在这种情况下的幂等性并不能保证每次返回的结果都是相同的,只要您可以根据需要多次调用端点而不影响系统。

编辑:一个反例:如果GET端点导致数据被排队,即从系统中删除,使其无法再次被检索,那么这将是幂等的。

答案 1 :(得分:0)

是的,

在描述中,缓存是在服务实现中,而不是在GET级别或某些中间。

副作用是服务的内部效果,它不会改变随后调用返回的结果。

http://www.restapitutorial.com/lessons/httpmethods.html

下的GET下的一些背景知识