最近在做一个项目,有个需求是一套前端代码,需要去兼容新旧接口,所以就想到了在请求拦截器里改变url地址。
// 请求拦截器
axios.interceptors.request.use(
config => {
// 取消请求
removePending(config);
config.cancelToken = new CancelToken(c => {
// 这里的axios标识我是用请求地址&请求方式拼接的字符串,当然你可以选择其他的一些方式
pending.push({
u: config.url + JSON.stringify(config.data) + "&" + config.method,
f: c
});
});
config.url =
sessionStorage.getItem("flag") === "true"
? `/api1${config.url}`
: `/api2${config.url}`;
// 配置request请求头header中的Authorization,如果登陆了就有Authorization就设置一下
if (store.state.userInfo && store.state.userInfo.Authorization) {
const token = store.state.userInfo.Authorization;
token && (config.headers.Authorization = token);
}
return config;
},
error => {
Message.error({
message: "请求接口出错",
duration: 3000
});
return Promise.error(error);
}
);