axios-api@no-996/axios-api是一个基于axios的可以创建结构化实例的工具。它具有以下特点:基于axios,兼容axiosapi,可以无缝迁移使用。内置两种常用的请求终止场景(基于cancelToken),防止接口重复调用。内置接口调用缓存机制,在设定的有效期内,可以从缓存中获取历史请求结果。内置接口地址模板插入功能,满足基于url含变量值的场景。关键:通过结构化API定义生成结构化API请求实例,快速调用项目中的业务接口。配合webpack插件(@no-996/axios-api-webpack-plugin),可以自动生成d.ts声明文件,在IDE中获取api定义的提示信息。第一次生成d.ts文件后,可能需要重启vscode才能显示请求示例的调用提示!目录安装使用结构化api定义结构化api请求实例请求中止取消缓存缓存接口定义配置描述axios-api配置描述依赖描述安装使用npminstall--save@no-996/axios-api//src/api/index.jsimportApiModulefrom'@no-996/axios-api'importoptionsfrom'./options'exportdefaultnewApiModule(//接口定义选项,//axios配置{baseURL:'https://jsonplaceholder.typicode.com',onUploadProgress:(progressEvent,percentCompleted)=>{console.log(percentCompleted)},},//axios-api配置{cacheStorage:localStorage,debug:true,})importinstancefrom'./api'//可以调用根据结构化实例,如://instance.module001.request()//instance.module001.sub.request()//instance.module002.request()//...结构化api定义//src/api/options/index.jsexportdefault[{name:'posts',des:'posts',url:'/posts',params:{userid:undefined,},children:[{name:'comments',des:'Comments',url:'/posts/{postId}/comments',urlParams:{postId:undefined,},metadata:{urlParams:{postId:{name:'postid',required:true,},},},},],metadata:{params:{userId:{name:'userid',des:'用户唯一ID',type:'string',},},},},{name:'albums',url:'/albums',des:'album',params:{id:undefined,},children:[],},{name:'photos',url:'/photos',des:'photos',params:{},children:[],缓存:3000,},{name:'todos',url:'/todos',des:'Todo',参数:{},children:[],cancel:'current'},{name:'users',url:'/users',des:'user',params:{},children:[],cancel:'previous'},]结构化api请求实例通过结构化api定义生成结构化api请求实例,在项目业务接口中快速调用使用webpack插件(@no-996/axios-api-webpack-plugin)生成d.ts声明文件。根据结构定义,可以自动生成d.ts声明文件,在IDE中可以得到api定义的提示信息:Metadataisnotdefined:Level1:Level2:Callhint:Metadataisdefined:调用提示:关于上面的例子这个例子使用了Vue,并将请求实例挂载到Vue.prototype://src/App.vueimportVuefrom'vue'importinstancefrom'./api'//...Vue.prototype。$api=instance//...注意例子中是这样挂载到Vue.prototype上的,需要为Vue.prototype添加声明,如下://src/index.d。tsimportVuefrom'vue'importapifrom'@/api/index'declaremodule'vue/types/vue'{interfaceVue{$api:typeofapi}}Requestabortedcancellancel:'current'保持当前请求在进行中并且中止后续的重复请求。cancel:'previous'放弃之前的请求,保留最新提交的请求。Cache缓存缓存:30003秒内不再有请求,从缓存中获取历史结果。接口定义配置说明配置类型必填默认值说明baseURLstring/function/PromiseNo''对原有baseURL的扩展,支持function/PromisereturnonUploadProgress(progressEvent:any,percentCompleted:number)=>voidNo/对原有onUploadProgress的扩展,add第二个参数,返回百分比值namestring是/接口名称desstring不是/接口描述cancel'current'/'previous'不是/请求中止模式cachenumber不是/接口结果缓存时长毫秒数urlOnlyboolean是不是/是否只返回处理后的url地址(params和urlParams的集成)urlParamsobject否/URL地址模板替换映射metadataApiMetadata否/请求参数的Metadata描述,用于d.ts生成和智能提示childrenarray
