【问题标题】:How to achieve idempotency in a POST method that you do not control?如何在您无法控制的 POST 方法中实现幂等性?
【发布时间】:2019-12-12 11:08:10
【问题描述】:

我打算使用 HTTP POST 方法,默认情况下,它不是幂等的。 由于我对此 API 没有任何控制权,如何保证我不会在服务器上创建重复条目的正确方法是什么? 我只能以一种方式思考: 1. 检查资源是否存在于服务器端。我想我只能在重试时进行此检查。 2. 如果没有,做一个HTTP POST来创建资源

有什么方法可以保证我不会创建重复的条目?

【问题讨论】:

  • 其他人会有同样的问题吗?即他们可以复制您已经创建的资源?还是该问题仅与您创建的资源有关?

标签: rest api http-post idempotent


【解决方案1】:

如何保证我不会在服务器上创建重复条目的正确方法是什么?

如果没有消息处理程序的支持,您无法保证。

有两个问题;首先 - 即使在幸福的道路上,在您 检查 和您 更新 的时间之间也有一个窗口,在此期间可能会更改远程主机。

其次,如果网络不可靠,消息可能会延迟。您发送创建新资源的请求,但该请求丢失。您检查,再试一次,并成功创建资源。现在您的原始请求重新出现并传送到服务器。

使用前检查可能会减少重复次数到可接受的容差,但不能保证准确一次。

【讨论】:

    猜你喜欢
    • 2016-01-08
    • 2019-10-13
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 2017-05-28
    • 1970-01-01
    相关资源
    最近更新 更多