在 RESTful 架构中,POST 请求既不是Safe也不是Idempotent。
现在,jQuery 的 ajax 调用允许重试失败的请求,方法是设置 ajax 调用以使用该函数来捕获失败,并可选择重试调用(以及相关设置,error
例如timeout
、和)。tryCount
retryAfter
retryLimit
重试 GET 调用不是问题(因为它们既安全又幂等),但是应该如何重试 POST 调用呢?
例如,假设我们使用 ajax POST 插入一条新记录:
- 在客户端上启动 ajax POST 调用。
- 服务器接收到调用,并更新数据库。
- 服务器响应,但此响应未能传递给客户端。
- 所以客户端假设有一个失败,并重试调用。
- 服务器再次接收到该调用,这又进行了一次更改。
- 等等...
满足这种情况的最佳方法是什么?