// 导入axios
import axios from 'axios';
// 动态导入config.json
//动态导入是ES6的语法,因此在一些旧版本的浏览器或Node.js环境中可能不被支持。
// const loadConfig = async () => {
// const config = await import('../public/config.json');
// return config.default; // 注意:使用default来访问导入的JSON内容
// };
let tokenPromise = null;
const getToken = async () => {
if (!tokenPromise) {
const configResponse = await fetch('../public/config.json');
if (!configResponse.ok) {
throw new Error('Failed to load config.json');
}
const Api = await configResponse.json();
// const Api = await loadConfig();
tokenPromise = axios.post(`${Api.PRD.dis ? Api.PRD.dis : Api.DEV.dis}/api/Token/GetToken`, { appkey: '20170301' }).then((res) => {
sessionStorage.setItem('token', res.data.token);
return res.data.token;
}).catch((err) => {
console.log(err);
});
}
return tokenPromise;
};
const request = axios.create();
// // 添加请求拦截器
request.interceptors.request.use(async (config) => {
const Api = await loadConfig(); // 加载配置
const token = sessionStorage.getItem('token') || (await getToken());
if (token) {
// headers: {
// 'X-Requested-With': 'XMLHttpRequest',
// auth: token
// },
config.headers['X-Requested-With'] = 'XMLHttpRequest';
config.headers['auth'] = token;
// config.headers['Authorization'] = `Bearer ${token}`;
}
config.baseURL = Api.PRD.dis ? Api.PRD.dis : Api.DEV.dis; // 使用配置中的URL
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});
export default request;
request 请求
于 2024-02-04 15:49:58 首次发布