axios封装请求
axios二次封装
import axios from 'axios'
axios.interceptors.request.use(
function (config) {
return config;
},
function (error) {
return Promise.reject(error);
}
);
axios.interceptors.response.use(
function (response) {
const { data } = response;
return data;
},
function (error) {
return Promise.reject(error);
}
);
import axios from "axios";
const http = axios.create({
baseURL: process.env.VUE_APP_BASE_URL,
});
http.interceptors.request.use(
function (config) {
return config;
},
function (error) {
return Promise.reject(error);
}
);
http.interceptors.response.use(
function (response) {
const { data } = response; return data;
},
function (error) {
return Promise.reject(error);
}
);
axios的取消重复请求
import axios from "axios";
const http = axios.create({
baseURL: process.env.VUE_APP_BASE_URL,
});
let httplist = []
const removeHttp = config => {
let index = httplist.findIndex(v => v.url === config.url && v.method === config.method)
if (index >= 0) {
httplist[index].controller.abort()
httplist.splice(index, 1)
}
}
http.interceptors.request.use(
function (config) {
removeHttp(config)
const controller = new AbortController()
config.signal = controller.signal
config.controller = controller
httplist.push({ ...config })
return config
},
function (error) {
return Promise.reject(error)
}
)
http.interceptors.response.use(
function (response) {
const { data } = response;
return data;
},
function (error) {
return Promise.reject(error);
}
);
axios的错误重复请求
http.interceptors.response.use(undefined, function axiosRetryInterceptor(err) {
var config = err.config;
if (!config || !config.retry) return Promise.reject(err);
config.__retryCount = config.__retryCount || 0;
if (config.__retryCount >= config.retry) {
return Promise.reject(err);
}
config.__retryCount += 1;
console.log(config.url + " 自动重试第" + config.__retryCount + "次");
var backoff = new Promise( function (resolve) {
setTimeout(function () {
resolve();
}, config.retryDelay || 1);
});
return backoff.then(function () {
return axios(config);
});
});
token失效返回登录页面
import axios from 'axios'
const whiteList=[ '/login', '/code' ]
axios.interceptors.request.use(
function (config) {
return config;
},
function (error) {
return Promise.reject(error);
}
);
axios.interceptors.response.use(
function (response) {
if(whiteList.includes(response.config.url)){
}else{
if(response.data.code===401)
sessionStorage.removeItem('token')
window.location('/login')
}
const { data } = response;
return data;
},
function (error) {
return Promise.reject(error);
}
);