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

What are the http codes to automatically retry the request?

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

我的spring-boot conf是这样的:

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

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

重试 404 和 503 HTTP 代码听起来不错,但我不知道是否有 "classic" 或 "default" 错误代码列表要重试。 有这种好的做法吗?

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

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

但这在很大程度上取决于实际 API。
你应该重试500吗?可能是因为服务器在连接到 DB 时出现意外问题。或者,也许你向它发送了一些它不期望的东西,而不是返回你 4XX 它崩溃了。

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

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