纯配置模式
适用场景:项目中已经有 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 方法,因为它本身不接管请求函数。
