import Cookies from 'js-cookie';
import axios from 'axios';
import { getToken } from './token';// const { CancelToken } = axios;// 初始化配置
const http = axios.create({baseURL: '/api',});
// // 请求拦截器
http.interceptors.request.use((config) => {const token = Cookies.get('token');if (config.token !== false && !token) {// let cancel;// const nextConfig = { ...config };// eslint-disable-next-line no-param-reassign// config.cancelToken = new CancelToken((c) => {// cancel = c;// });// 缺少 Token,请求取消// cancel();// 预请求 token,绕过 iways 登录// getToken(http).then(() => http(nextConfig));getToken(http).then(() => window.location.reload());}// 注入 token// eslint-disable-next-line no-param-reassignconfig.headers.token = token;// config.headers.token = "token";// 注入请求数据// eslint-disable-next-line no-param-reassignconfig.data = { data: config.data };// 由于广本接口结构不统一,屏蔽掉这里return config;},(error) => Promise.reject(error),
);// // 响应拦截器
http.interceptors.response.use((response) => {let { status, data } = response;// 二进制流文件if (status === 200 && !data.status) return response;({ status: { status }, data } = data);// 数据请求失败if (status !== 0) {// Token 过期重刷// eslint-disable-next-line prefer-promise-reject-errorsreturn Promise.reject({ response: response.data.status });}// 成功并返回数据return data || {};},(error) => {// 因无 Token 而取消的请求不抛出错误if (axios.isCancel(error)) {return undefined;}if (error.response) {return Promise.reject(new Error(`Http ${error.message}`));}return Promise.reject(error);},
);export default http;
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!