Skip to content

全量入口与按需入口

全量入口(默认)

@hydd/request-guard 是全量入口,默认安装 duplicateretrycircuitBreaker 三个能力,用于保持现有 Web / Axios 用户零迁移。

javascript
import { setupRequestGuard } from '@hydd/request-guard';
// duplicate / retry / circuitBreaker 已自动安装

按需入口(core)

小程序等包体积敏感项目请从 @hydd/request-guard/core 接入。core 默认不安装任何能力,需要显式传入 capabilities

javascript
import { setupRequestGuard } from '@hydd/request-guard/core';
import { duplicate, retry } from '@hydd/request-guard/capabilities';

const guardedRequest = setupRequestGuard(wxRequest, {
  capabilities: [
    duplicate(),
    retry()
  ],
  defaults: {
    duplicate: {
      message: '请勿重复提交'
    },
    retry: {
      attempts: 2,
      delay: 300
    }
  },
  rules: [
    { method: 'post', duplicate: true },
    { method: 'get', retry: true }
  ]
});

单能力子路径

如果要进一步控制小程序包体,可使用单能力子路径,只打包你真正用到的能力:

javascript
import { setupRequestGuard } from '@hydd/request-guard/core';
import duplicate from '@hydd/request-guard/capabilities/duplicate';

const guardedRequest = setupRequestGuard(wxRequest, {
  capabilities: [duplicate()],
  rules: [{ method: 'post', duplicate: true }]
});

能力工厂 vs defaults

能力工厂(duplicate() / retry())主要用于声明"安装哪些能力",推荐把项目默认参数写在 defaults 里。如果 rulesdefaults 或请求级 requestGuard 写到了未注册的能力,开发环境会输出告警并忽略该配置。

基于 MIT 许可发布