vue中对axios简单封装
经常使用到vue,axios封装也是比较常见的,可优化代码可读性 ,代码如下:
import axios from "axios"
const baseURL = "https://...."
const distance = axios.create({
baseURL:baseURL
});
import { Message } from 'element-ui';
function http(url,type,param){ // 接口地址 、 接口类型 、接口参数
return new Promise((reslove,reject) => {
let tmps = param ? param : {}
distance[type](url, tmps)
.then( res => {
res.status == 200 ? reslove(res) : reject(res.response)
})
})
}
//请求拦截
distance.interceptors.request.use(config =>{
let token = sessionStorage.getItem("token");
if(token !== ''){
let tmp = token.substr(1,token.length-1);
config.headers["Authority-Token"] = tmp.substr(0,token.length-2);
}
return config;
})
//响应拦截
distance.interceptors.response.use(config=>{
return config;
}, err => {
console.log(err)
if(err.response.status == 400 || err.response.status_code == 400){
Message.error(err.response.data.message);
}
if(err.response.data.message == "token已过期,请重新登录"){
sessionStorage.setItem("token","")
sessionStorage.setItem("user","")
window.location.reload();
}
return err;
})
export const Login = function (user,pwd) {
return http("/login", 'post', {user,pwd});
}

浙公网安备 33010602011771号