@ued_fpi/data-visual
Version:
<br /> <br /> <div style="text-align:center"> <b style="font-size:30px">@ued_fpi/data-visual</b> <p>基于Vite4+TypeScript的Vue3大屏组件库开发框架</p> <img style="display:inline" src="https://img.shields.io/npm/v/@ued_fpi/data-visual" />
80 lines (77 loc) • 2.02 kB
JavaScript
import axios from 'axios';
import Config from '../config/index.mjs';
import Base from './base-serve.mjs';
const errorHandle = (status, message) => {
switch (status) {
case 400:
case 401:
console.log(message);
break;
case 403:
console.log(message);
break;
case 502:
console.log(message);
break;
case 404:
console.log(message);
break;
}
};
const instance = axios.create({
baseURL: Config.domain,
// 请求时长
timeout: 60 * 1e3,
validateStatus() {
return true;
},
transformResponse: [
(data) => {
if (typeof data === "string" && (data.startsWith("{") || data.startsWith("[")))
data = JSON.parse(data);
return data;
}
]
});
instance.interceptors.request.use(
(config) => {
config && config.headers && (config.headers["Cache-Control"] = "no-cache, no-store");
config && config.headers && (config.headers.Pragma = "no-cache");
Config.isAddToken && (config.headers.token = localStorage.getItem("token"));
return config;
},
(error) => {
return Promise.reject(error);
}
);
instance.interceptors.response.use(
// 请求成功
(response) => {
const { code, message } = response.data;
errorHandle(code || response.status, message);
if ([200, "success"].includes(code) || typeof code !== "number")
return response.data;
else if (code)
return Promise.reject(response.data);
else
return Promise.resolve(response.data);
},
// 请求失败
(error) => {
if (axios.isCancel(error)) {
console.warn(error.message);
}
const { response } = error;
if (response) {
errorHandle(response.status, response.data.message);
return Promise.reject(response);
}
}
);
const request = instance.request;
const requestControl = (option) => {
if (!option.url?.includes("http"))
option.url = (option.server ? Base[option.server] : "") + option.url;
return request(option);
};
export { requestControl as default };