自动重试请求的 http 代码是什么?



我正在使用混合的Spring-Cloud + feign + spring-retry来帮助客户端重试请求(都是基于Kotlin的后端(

我的弹簧靴会议是这样的:

myApp:
ribbon:
OkToRetryOnAllOperations: true
retryableStatusCodes: 404, 503

(注意:OkToRetryOnAllOperations=true 仅用于重试 POST/PUT 请求(

重试 404 和 503 HTTP 代码听起来不错,但我无法弄清楚是否有"经典"或"默认"的错误代码列表要重试。 是否存在这种良好做法?

我们假设所有请求在服务器端都是幂等的(如果不是,重试可能会导致问题(。

作为一个非常粗略的经验法则:
4XX - 客户端做了坏事
5XX - 服务器做了坏事

但这在很大程度上取决于实际的 API.
你应该重试 500 吗?也许是因为服务器在连接到数据库时出现了意外的打嗝。或者,也许您正在发送一些它意想不到的东西,而不是返回您 4XX,它会崩溃。

通常没有太多理由重试 404,除非您预计会出现此资源。

唯一有效的重试 HTTP 代码是 408、502、503 和 504

AWS 客户端还会重试 429。

一般来说,我推荐这些:

  • 408 请求超时
  • 425 太早
  • 429 请求过多
  • 500 内部服务器错误
  • 502 错误的网关
  • 503 服务不可用
  • 504 网关超时

但它实际上取决于 API,因此您可以查找其文档(如果有(。例如,Whatsapp 使用 500 表示可以重试或不重试的错误。

相关内容

  • 没有找到相关文章

最新更新