跳到正文
Yayin Story Studio Yayin Story Studio 项目文档

Visindigo::Network::RetryPolicy Struct

struct Visindigo::Network::RetryPolicy

请求重试策略. 详情...

头文件: #include <Network/HttpTypes.h>
自以下版本: Visindigo 0.17.0

详细说明

RetryPolicy 描述一次请求在失败后是否可以重试、重试几次、以及退避方式。 它属于纯值类型,可以随意拷贝与修改。

默认策略只对幂等方法(GET / HEAD / PUT / DELETE / OPTIONS)生效, 这是 RetryIdempotentOnly 的默认值。之所以这样设定,是因为 POST 重试可能造成服务端重复处理(例如重复下单、重复扣费),而这在传输层 无法自动判断安全性,因此必须由调用方显式关闭该开关才允许重试。

  • MaxAttempts 总尝试次数(含首次),为 1 表示不重试。
  • InitialDelayMs 首次重试前的等待毫秒数。
  • MaxDelayMs 退避延迟的上限,避免因指数增长而等待过久。
  • BackoffMultiplier 退避倍数,每次重试后延迟乘以此值。
  • UseJitter 是否在延迟上叠加随机抖动,用于避免大量客户端同时重连造成的惊群。
  • RespectRetryAfter 是否优先采纳服务端返回的 Retry-After 头(多见于 429 / 503)。
  • RetryOnTimeout 超时是否可重试。
  • RetryOnConnectionError 连接类错误(拒绝、DNS 失败、TLS 失败等)是否可重试。
  • RetryOnStatusError 命中 RetryableStatusCodes 的状态码是否可重试。
  • RetryIdempotentOnly 是否只对幂等方法重试。
  • RetryableStatusCodes 允许重试的 HTTP 状态码集合。