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 里我们可以支持以下能力:
- 可以做请求发起前的前置逻辑判断。
- 可以对 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 做一些拓展。它是一个洋葱模型,具体实践情况如下。
相关能力插件
一些和请求相关的拓展能力,会放到插件的引入具体阐述,这一栏只做相关能力的介绍。
接口缓存与限流
通过远端配置快速实现基于接口级别的请求数据缓存
与限流熔断
,在关键节点可以有效保护后端服务的负载。开发者在编写业务时无需提前考虑该类优化,后续只需要通过 Anim 将插件引入并提供相应配置即可完成功能的引入。
接口安全加解密
Anim 通过对称加密与非对称加密两者结合的方式,对请求的数据与返回进行安全加密。开发者只需要通过将 Anim 将该插件引入后,即可实现该能力。