Rest 来自客户端的幂等键';s视角

Rest 来自客户端的幂等键';s视角,rest,http,microservices,Rest,Http,Microservices,假设我有一个API,它调用一个名为/charge(POST)的下游服务的API。假设在充电时,反向代理发生超时,我得到一个5xx。但指控确实发生了 在这种情况下,我会用5xx回复我的消费者。现在,如果使用者使用相同的幂等键调用,那么他的请求可以成功,因为下游服务将返回响应的缓存副本。但是,如果他在调用我的API时使用不同的幂等键,他将继续获得409s,因为已经收取了费用 以下是我的两个问题: 客户机如何知道何时使用相同的幂等ID重试或同时启动一个新请求 (补充前面的问题)UI如何决定使用不同的幂

假设我有一个API,它调用一个名为
/charge
(POST)的下游服务的API。假设在充电时,反向代理发生超时,我得到一个
5xx
。但指控确实发生了

在这种情况下,我会用
5xx
回复我的消费者。现在,如果使用者使用相同的幂等键调用,那么他的请求可以成功,因为下游服务将返回响应的缓存副本。但是,如果他在调用我的API时使用不同的幂等键,他将继续获得
409s
,因为已经收取了费用

以下是我的两个问题:

  • 客户机如何知道何时使用相同的幂等ID重试或同时启动一个新请求

  • (补充前面的问题)UI如何决定使用不同的幂等ID?是否每个新请求都包含一个新Id,并且只有重试逻辑重用相同的Id

  • 基本上,我试图从客户端理解幂等键
    的透视图。

    在向用户返回故障响应之前,应自动重试超时几次。因此,如果错误是暂时的,用户不会注意到任何问题(除了响应中可能存在的可忽略的延迟)

    请求发起系统应维护所有请求及其状态的日志。因此,如果故障持续时间较长,系统可以定期重试失败的请求,并向用户提供提交请求的详细UI视图。这就不需要用户重试请求。系统将代表用户执行此操作