first commit
This commit is contained in:
52
ruoyi-ui/public/monitor/js/request.js
Normal file
52
ruoyi-ui/public/monitor/js/request.js
Normal file
@@ -0,0 +1,52 @@
|
||||
// 1. 直接使用 CDN 全局的 axios
|
||||
const axios = window.axios;
|
||||
|
||||
// 2. 基础配置(无 export 语句)
|
||||
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8';
|
||||
const service = axios.create({
|
||||
baseURL: '', // 不使用baseURL前缀,直接使用完整路径
|
||||
timeout: 10000
|
||||
});
|
||||
|
||||
// 3. request 拦截器(删除所有依赖若依工具的代码)
|
||||
service.interceptors.request.use(config => {
|
||||
// 从 cookie 取若依的 Admin-Token(确保登录状态)
|
||||
const token = document.cookie.replace(/(?:(?:^|.*;\s*)Admin-Token\s*=\s*([^;]*).*$)|^.*$/, '$1');
|
||||
if (token) {
|
||||
config.headers['Authorization'] = 'Bearer ' + token;
|
||||
}
|
||||
return config;
|
||||
}, error => {
|
||||
console.log(error);
|
||||
return Promise.reject(error); // 必须加 return,否则吞错误
|
||||
});
|
||||
|
||||
// 4. response 拦截器(简化,无 element-ui 依赖)
|
||||
service.interceptors.response.use(res => {
|
||||
// 二进制数据直接返回(如需下载可保留)
|
||||
if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
|
||||
return res.data;
|
||||
}
|
||||
// 状态码处理(用原生 alert 替代弹窗)
|
||||
const code = res.data.code || 200;
|
||||
if (code === 401) {
|
||||
alert('登录过期,请重新登录若依系统');
|
||||
return Promise.reject('登录过期');
|
||||
} else if (code !== 200) {
|
||||
alert('接口失败:' + (res.data.msg || '未知错误'));
|
||||
return Promise.reject('接口错误');
|
||||
} else {
|
||||
return res.data; // 若依接口返回的 data 已处理,直接返回
|
||||
}
|
||||
}, error => {
|
||||
// 错误提示(原生 alert)
|
||||
let msg = error.message;
|
||||
if (msg === "Network Error") msg = "后端连接异常";
|
||||
else if (msg.includes("timeout")) msg = "请求超时";
|
||||
else if (msg.includes("status code")) msg = "接口" + msg.substr(-3) + "异常";
|
||||
alert(msg);
|
||||
return Promise.reject(error);
|
||||
});
|
||||
|
||||
// 5. 核心:挂载到全局 window,无任何 export
|
||||
window.request = service;
|
||||
Reference in New Issue
Block a user