vue项目中api接口管理总结
默认vue项目中已经使用vue-cli生成,安装axios,基于element-ui开发,axiosconfig目录和api目录是同级,主要记录配置的相关。
1.在axiosconfig目录下的axiosConfig.js
importVuefrom'vue' importaxiosfrom'axios' importqsfrom'qs' import{Message,Loading}from'element-ui' //响应时间 axios.defaults.timeout=5*1000 //配置cookie //axios.defaults.withCredentials=true //配置请求头 axios.defaults.headers.post['Content-Type']='application/x-www-form-urlencoded;charset=UTF-8' //静态资源 Vue.prototype.$static='' //配置接口地址 axios.defaults.baseURL='' varloadingInstance //POST传参序列化(添加请求拦截器) axios.interceptors.request.use( config=>{ loadingInstance=Loading.service({ lock:true, text:'数据加载中,请稍后...', spinner:'el-icon-loading', background:'rgba(0,0,0,0.7)' }) if(config.method==='post'){ config.data=qs.stringify(config.data) } returnconfig }, err=>{ loadingInstance.close() Message.error('请求错误') returnPromise.reject(err) } ) //返回状态判断(添加响应拦截器) axios.interceptors.response.use( res=>{ if(res.data.code===200){ loadingInstance.close() returnres }else{ loadingInstance.close() Message.error(res.data.msg) } }, err=>{ loadingInstance.close() Message.error('请求失败,请稍后再试') returnPromise.reject(err) } ) //发送请求 exportfunctionpost(url,params){ returnnewPromise((resolve,reject)=>{ axios .post(url,params) .then( res=>{ resolve(res.data) }, err=>{ reject(err.data) } ) .catch(err=>{ reject(err.data) }) }) } exportfunctionget(url,params){ returnnewPromise((resolve,reject)=>{ axios .get(url,{ params:params }) .then(res=>{ resolve(res.data) }) .catch(err=>{ reject(err.data) }) }) }
2.在api目录下的index.js,api1.js,api2.js
api1.js import{post}from'../axiosconfig/' exportdefault{ login(params){ returnpost('/users/api/login',params) } } api2.js import{post}from'../axiosconfig/' exportdefault{ regist(params){ returnpost('/users/api/regist',params) } } index.js importuserfrom'./api1.js' importactivefrom'./api2.js' exportdefault{ api1, api2 }
3.main.js配置
importapifrom'./api/' Vue.prototype.$api=api
4.在组件中使用
登录组件中 doLongin(){ letparams={} this.$api.api1.login(params).then(res=>{ console.log(res) }) } 注册组件中 doRegist(){ letparams={} this.$api.api2.regist(params).then(res=>{ console.log(res) }) }