自动重试请求的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
我正在使用组合 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