Skip to content

纯配置模式

适用场景:项目中已经有 Axios 安装或 Wrapper 接入,但希望在另一个入口(如路由守卫、应用初始化)统一管理规则;或者需要在运行时动态调整守护策略。

纯配置模式不接管任何请求函数,只设置全局共享配置。所有通过 Axios 安装或 Wrapper 接入的请求会自动读取这里的配置。

基本用法

javascript
import { setupRequestGuard, ConsoleRequestGuardLogger } from '@hydd/request-guard';

// 应用初始化时统一配置(通常放在 main.js / app.js)
const requestManager = setupRequestGuard({
  notify: (payload) => Toast.show(payload.message),
  logger: new ConsoleRequestGuardLogger({ devOnly: true }),
  rules: [
    { method: 'post', duplicate: { strategy: 'block', message: '正在处理' } },
    { url: /\/api\/config/, retry: { attempts: 3, delay: 1000 } },
    { url: /\/api\/core\//, circuitBreaker: { failCount: 3, window: 30000 } }
  ]
});

动态管理规则

这是纯配置模式的核心优势:

javascript
// 后续根据业务需要动态追加规则
requestManager.addRule({
  url: /\/api\/payment/,
  duplicate: { strategy: 'block', message: '支付处理中' }
});

// 用户切换页面时,替换整套规则
requestManager.setRules([
  { method: 'post', duplicate: true },
  { url: /\/api\/dashboard/, retry: { attempts: 2 } }
]);

// 清空所有规则(临时关闭所有守护匹配)
requestManager.clearRules();

// 查看当前所有能力的运行状态
const snapshot = requestManager.getStateSnapshot();
console.log(snapshot);
// → { duplicate: { size: 3 }, retry: { size: 0 }, circuitBreaker: { size: 1, circuits: [...] } }

// 清空所有能力状态(如用户登出时重置)
requestManager.clearState();

注意

纯配置模式返回的 controller 没有 uninstall 方法,因为它本身不接管请求函数。

基于 MIT 许可发布