【问题标题】:Is a GET request still idempotent if it is cached?如果 GET 请求被缓存,它仍然是幂等的吗?
【发布时间】:2016-01-05 16:24:14
【问题描述】:

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

【问题讨论】:

    标签: api get api-design idempotent


    【解决方案1】:

    要使操作具有幂等性,您必须能够重复该操作而不会产生额外的副作用。

    在您的具体示例中,如果 GET 请求导致从外部源获取数据,那么问题实际上是关于该源的幂等性,尽管如果您提到搜索端点,它很有可能会是。

    p>

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

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

    【讨论】:

    • 抱歉,我在我的问题中遗漏了一个重要的词(“缓存对端点的请求”)。但是您似乎在说幂等性在旁观者的眼中-它更多的是与返回给请求者的数据有关;服务于 api 的系统状态不是必然什么定义了幂等性?
    【解决方案2】:

    是的,

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

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

    http://www.restapitutorial.com/lessons/httpmethods.htmlGET 下的一些背景

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-07
      • 2015-06-18
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多