vue axios 二次封装的示例代码
这段时间告诉项目需要,用到了vue。 刚开始搭框架的时候用的是vue-resource后面看到官方推荐axios就换过来了 顺便封装了一下 let cancel,promiseArr = {}
const CancelToken = axios.CancelToken; //请求拦截器 axios.interceptors.request.use(config => { //发起请求时,取消掉当前正在进行的相同请求 if (promiseArr[config.url]) { promiseArrconfig.url promiseArr[config.url] = cancel } else { promiseArr[config.url] = cancel } return config },error => { return Promise.reject(error) }) //响应拦截器 axios.defaults.baseURL = '/api' export default { 说明1、为防止发起请求时,当前正在进行的相同请求,在请求拦截器中加入了hash判断,将相同请求url拦截 2、将axios中get,post公共配置抽离出来 3、get,post请求的封装 可能你会问,这里的axios返回的就是promise对象,为什么还要再次对get,post封装一次promise.因为我这边的话,在开发中使用async await会出现数据请求失败的情况,报的错就是返回的不是promise对象。(ps:可async await返回的就是promise呀,这个问题后续再搞一下)就直接return了一个promise对象,以避免上面的错误。下面是请求接口的一个例子 {
return req.get('/RestHome/GroupDetail',param)
}
下面是数据的获取 到这里我们就简单的封装了一下适合自己项目的axios 封装理由: 1、可以和后端商量好错误码在这统一提示统一处理,省去不必要的麻烦 2、如果做接口全报文加解密都可以在此处理 接口统一归类: export default ApiSetting
归类好处: 1、后期接口升级或者接口名更改便于维护 http调用:
import http from "../../lib/http.js";
import ApiSetting from "../../lib/ApiSetting.js";
export default {
created: function() {
http(ApiSetting.getLocation,{"srChannel": "h5",})
.then((res)=>{
console.log(res)
},(error)=>{
console.log(error)
})
},methods: {
} 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |