axios封装
import axios from "axios";
import QS from "qs";
import { TosMessage } from "@/util/message.js";
let axIns = axios.create();
const repeatCancelMap = new Map()
axIns.defaults.timeout = 1000 * 60 * 10;
axIns.interceptors.request.use(
(config) => {
return config;
},
(error) => {
return Promise.error(error);
}
);
axIns.interceptors.response.use(
(response) => {
if (!response) return Promise.reject(response);
if (response.status == 200) {
if (response.data && response.data.code == 101) {
} else {
if (response.data.code == 200) {
return Promise.resolve(response.data);
} else {
TosMessage({
message: response.data.message,
type: "error",
})
return Promise.reject(response.data);
}
}
} else {
return Promise.reject(response);
}
},
(error) => {
return Promise.reject(error);
}
);
export function get(url, params) {
return new Promise((resolve, reject) => {
axIns
.get(url, params)
.then((res) => {
resolve(res.data);
})
.catch((err) => {
err.data ? reject(err.data) : reject(err);
});
});
}
export function post(url, params, config) {
return new Promise((resolve, reject) => {
let controller = new AbortController()
if (config && config.cancelRepeat) {
if (repeatCancelMap.has(url)) {
repeatCancelMap.get(url).abort()
}
repeatCancelMap.set(url, controller)
}
axIns
.post(url, QS.stringify(params), {
signal: config?.cancelRepeat ? controller.signal : ''
})
.then((res) => {
resolve(res.data);
})
.catch((err) => {
err.data ? reject(err.data) : reject(err);
}).finally(() => {
repeatCancelMap.delete('url')
});
});
}
export function ajaxAxios(url, options, params, flag = true) {
let data = params;
if (flag) {
data = data ? QS.stringify(data) : "";
}
return new Promise((resolve, reject) => {
axios({ url, ...options, data })
.then((res) => {
resolve(res.data);
})
.catch((err) => {
if (axios.isCancel(err)) {
console.warn("请求取消: ", url);
} else {
err.data ? reject(err.data) : reject(err);
}
});
});
}