UNPKG

instruct-request-axios

Version:
161 lines (133 loc) 4.34 kB
# instruct-request-axios(指令请求器) <br /> ## 注意: cache 正常执行时间为 160ms 正常无任何指令的执行时间大概为 4ms 请注意如果您的项目对性能要求极高,请目前不要考虑此插件。 <br /> 为什么慢: <br /> - 采用加密解密(ASE,MD5),针对数据缓存,唯一值sign令牌 采用了加密(此任务耗时最重) - 有一些未经优化的判断,因为本插件,粗略的完善,针对校验空字段的时候多出了一些复杂判断多耗时1-3ms - 配置项共享过重,插件兼容配置项逻辑(本身可能也不会消耗多少性能) <br /> <br /> 其他注意事项: <br /> - 为了实现then多次触发自定义了一个模拟Promise简单行为的类导致目前没有去兼容await <br /> ## 思想: 让请求前后的处理操作公共化,通过自定义指令来检测需要执行的操作,已便将更多的精力放在逻辑处理中。 比如你想设置请求时携带用户的token 设置是通用且 重复的工作,如果说可以通过配置来完成设置岂不是省时方便,自己写一个 token指令追踪,通过token设置参数,全局或者 局部 来完成 触发规则,比如提示一个成功,提示一个失败,根据不同的code码提示或者根据msg提示,等等这些如果项目越大,写的地方就越多,那是多么恐怖的,后期会面临更换提示框的种种维护困境 <br /> <br /> ## 自带捆绑配置 - rest boolean 是否展开 如果展开 直接显示接口返回数据 false 将展示axios默认的数据 默认 true - message Object 提供的提示对象 info,success,error,warning,loading 回调函数格式 (content:string,duration?:number,onClose?:Function) duration 单位 ms - responseCode 成功的状态码 如果出现此类状态码 将会被认为是成功的请求 - codeKey 校验的字段 - customCheck 自定义校验 是否为 成功的请求 <br /> ## 提供插件 - cache 缓存用于缓存记录接口请求 - verification 用于校验给定格式的数据,通过定义的方式导出 - tip 用于提示接口的返回值,通过给定的 message 进行通知 - slice 图片分片传输 ## 查看文档 <a href="https://dreamwxc.github.io/instruct-request-axios/">文档链接</a> ## 示例 <br /> ### javascript使用 <br /> ``` import instructRequest,{CachePlugin} from 'instruct-request-axios'; const request = instructRequest.create({ // 默认的请求方式 method:'POST', // 请求前缀 baseURL:'' }); // 注册 cache配置插件 CachePlugin.register(request,{ ...option }); // 或者 request.$use(CachePlugin,{ ...option }); request.$request({ // 请求地址 url:'', // 缓存配置指令 cache: true | { storage:'local' | 'session' | 'memory', ...options } }).then((data)=>{ console.log(data.isSuccess,data.isCache,data.sgin,data.data); }); ``` <br /> ### typescript使用 <br /> ``` import instructRequest,{CachePlugin} from 'instruct-request-axios'; const request = instructRequest.create<{ data:any, code:number, msg:string },{ ...指令的接口描述比如 会增加提示 token:boolean }>({ // 默认的请求方式 method:'POST', // 请求前缀 baseURL:'' }); // 书写token插件 request.$use({ install(target,option) { // 插入 前置 指令 更多细节请阅读开发指令 以及 RequestPlugin 配置 target.push({ name: 'token', trigger: (config) => { if(!config.requestData.data) config.requestData.data = {}; config.requestData.data.token = '***' }, type:'entry' }); } },{ ...option }); // 注册 cache配置插件 CachePlugin.register(request,{ ...option }); // 或者 request.$use(CachePlugin,{ ...option }); request.$request<{ data:Array<{ id:number, name:string }>, code:number, msg:string, }>({ // 请求地址 url:'', // 缓存配置指令 cache: true | { storage:'local' | 'session' | 'memory', ...options }, // 刚定义的 token 配置 token: true }).then((data)=>{ console.log(data.isSuccess,data.isCache,data.sgin,data.data); console.log(data.code,data.msg,data.data); }); ``` <br />