Skip to content
On this page

Anim Request

Anim 基于小程序内的 wx.request 做了更多能力的拓展,可以更好的帮助开发者实现业务。

Hooks 钩子

Anim Request 提供了以下几个 Hooks 钩子

beforeRequest

支持对请求前做一次逻辑执行,根据返回的参数来决定最终的逻辑。

js
// app.js
const Anim = require('@ssv-lab/anim');
const userStore = require('./store/userStore');

Anim.interceptors.request({
  beforeRequest(options) {
    console.log('custom request', options);
    // 通过返回 false 拦截本次请求
    if (!userStore.isAuth) {
      return false;
    }
    // 最终根据新的 options 继续发起请求
    options.header = {
      ...(options.header || {}),
      ['SSV-BUSINESS-ID']: 'abcdefg',
    };
    return options;
  },
});

可以从上面的例子看到,在 beforeRequest 里我们可以支持以下能力:

  1. 可以做请求发起前的前置逻辑判断。
  2. 可以对 request options 做统一的逻辑处理。

Response Handler

对于请求返回的统一处理,Anim Request 也提供了相应的 Hooks,这里放到一起进行相应举例。

js
// app.js
const Anim = require('@ssv-lab/anim');

Anim.interceptors.request({
  beforeRequest(options) {
    return options;
  },
  success(response) {
    // 统一处理 success response
  },
  fail(error) {
    // 统一处理 fail error
  },
  complete(response) {
    // 统一处理 complete response
  },
});

更好的理解重写 Anim Request

每当我们往 Request 做一次拦截,就会在原有的 Request 逻辑上做一次包装,最终返回一个新的 Request 函数。这样的好处是,我们可以在不改变原有的 Request 逻辑的情况下,对 Request 做一些拓展。它是一个洋葱模型,具体实践情况如下。

image-20230314142043591

相关能力插件

一些和请求相关的拓展能力,会放到插件的引入具体阐述,这一栏只做相关能力的介绍。

接口缓存与限流

通过远端配置快速实现基于接口级别的请求数据缓存限流熔断,在关键节点可以有效保护后端服务的负载。开发者在编写业务时无需提前考虑该类优化,后续只需要通过 Anim 将插件引入并提供相应配置即可完成功能的引入。

接口安全加解密

Anim 通过对称加密与非对称加密两者结合的方式,对请求的数据与返回进行安全加密。开发者只需要通过将 Anim 将该插件引入后,即可实现该能力。

Released under the MIT License.