You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
4.3 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import axios from 'axios';
// 创建一个Axios实例并配置基础URL和请求超时时间
const service = axios.create({
baseURL: 'http://192.168.7.3:18080', // 设置基础URL
timeout: 60000, // 设置请求超时时间(单位为毫秒)
// withCredentials: true, // 如果需要发送跨域请求时携带凭证如Cookies可以取消注释此行
});
// service.defaults.withCredentials = true;
// 请求拦截器
service.interceptors.request.use(
(config) => {
// 在发送请求之前做些什么例如添加token到headers
// config.headers['cookie'] = 'authjs.csrf-token=024846fb3c7ff4d8baffaf9de069396e72ab6c439fb44ce126830edee05d2e88%7Ccc355f6cf425ed6dc60262ef653a29adb8c2a05aba34ddf4a2c1c4dfa59d5613; authjs.callback-url=http%3A%2F%2F192.168.15.199%3A3210%2Fchat%3Fsession%3Dinbox%26topic%3Dtpc_nBRvJCjmn1as; LOBE_LOCALE=zh-CN; LOBE_THEME_PRIMARY_COLOR=undefined; LOBE_THEME_NEUTRAL_COLOR=undefined; authjs.session-token=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwia2lkIjoiY3FXQ2gyUDdpSVZEdkFQZEtHQU55d0JJdmFaMDhGVzJfV1pBelQxYjVoV0oyRjRubDF1LWFJdllYeHkxMW4zZU1kdjVrMlAxWFRwQWdfZl9SdDU2Q2cifQ..wduWoP240CT_p3rOpF3vWg.do7yfgOkk8YMgwApJ1C2-rkBVPh9x00dXBNe-SMhhTj5NH5EEfwEYQiqHb3ZJwnSdT_L6d_GnY42NvgS6E1yTmi54gCdxabms-Eemy75IB_UCDcQjak7e4hSRFdAbH8AjA0MeS6fpJcFJlkWwniZf9kWZsuvy-m702_4SsP8E9E5b_X-9EIX85cDhRFjUC6cNdpNcwY98CvlhI7X-PMh20unkhSRiKCLJOaEKIZeJg_REGezxGcz3NrIE30fI3KB0T5tHetKYO_6BYJ5KCWgiaKHebgxSA21KTXeggpv0Q-UBS5yOmys32Ra2NwFroyahJ9VC0Z3cQiZegb7GXIjkg.UfjoEB1hV-NjULY12ZqZp_hLeInM4LCUHhUNyeqygws';
config.headers['x-lobe-chat-auth'] = 'http_nosafe.eyJhY2Nlc3NDb2RlIjoiIiwidXNlcklkIjoiZmQ4YWUzNTktNjRkYy00YTU3LWFiNDEtNTQzOGUyZmRhOTc1In0=';
return config;
},
(error) => {
// 对请求错误做些什么
console.log(error); // for debug
return Promise.reject(error);
}
);
// 响应拦截器
service.interceptors.response.use(
(response) => {
// 对响应数据做点什么,例如根据状态码判断成功或失败
const res = response.data;
if (response.status === 200) {
return res;
} else {
return Promise.reject(res);
}
},
(error) => {
// 对响应错误做点什么
/***** 接收到异常响应的处理开始 *****/
if (error && error.response) {
// 1.公共错误处理
// 2.根据响应码具体处理
switch (error.response.status) {
case 400:
error.message = "错误请求";
break;
case 401:
error.message = "错误请求";
break;
case 423:
// token刷新失效
error.message = error.response.data + "请重新登录";
break;
case 403:
error.message = "拒绝访问";
break;
case 404:
error.message = "请求错误,未找到该资源";
break;
case 405:
error.message = "请求方法未允许";
break;
case 408:
error.message = "请求超时";
break;
case 500:
error.message = "服务器端出错";
break;
case 501:
error.message = "网络未实现";
break;
case 502:
error.message = "网络错误";
break;
case 503:
error.message = "服务不可用";
break;
case 504:
error.message = "网络超时";
break;
case 505:
error.message = "http版本不支持该请求";
break;
default:
error.message = `连接错误${error.response.status}`;
}
} else {
error.message = "连接服务器失败";
}
/***** 处理结束 *****/
//如果不需要错误处理,以上的处理过程都可省略
return Promise.reject(error.response);
}
);
export default service;