Skip to content

请求级配置

当你需要对某个具体请求进行单独配置时使用。请求级配置优先级最高,会覆盖规则和全局默认。

配置字段

字段类型说明
requestGuardfalse | object设为 false 完全绕过守护层;设为对象则配置各能力
requestGuard.duplicateboolean | object防重配置,true 启用默认,false 禁用
requestGuard.retryboolean | object重试配置,true 启用默认,false 禁用
requestGuard.circuitBreakerboolean | object熔断配置,true 启用默认,false 禁用

配置优先级

请求级配置(最高) > 规则匹配 > 全局默认(最低)

完整示例

javascript
// ============ 场景 1:为单个请求开启防重 ============
await axios.post('/api/order/submit', orderData, {
  requestGuard: {
    duplicate: {
      strategy: 'block',              // 使用阻断策略
      message: '订单处理中,请稍候',    // 自定义提示文案
      keyGenerator(config) {           // 以业务 ID 作为判重依据
        return `order:${config.data.orderId}`;
      }
    }
  }
});

// ============ 场景 2:为单个请求开启重试 ============
await axios.get('/api/config/list', {
  requestGuard: {
    retry: {
      attempts: 5,          // 最多尝试 5 次
      delay: 300,           // 初始延迟 300ms
      backoff: 'exponential' // 指数退避:300, 600, 1200...
    }
  }
});

// ============ 场景 3:禁用单个能力 ============
await axios.post('/api/special', data, {
  requestGuard: {
    duplicate: false  // 这个请求不需要防重
  }
});

// ============ 场景 4:完全绕过守护层 ============
await axios.post('/api/internal', data, {
  requestGuard: false  // 彻底跳过所有治理能力,直接发请求
});

TIP

请求级显式配置不受 excludeMethods 限制。只有规则匹配和全局默认受排除方法影响。

基于 MIT 许可发布