assistant-todo/src/utils/axiosReq.ts

86 lines
3.2 KiB
TypeScript
Raw Normal View History

2024-11-21 09:48:47 -05:00
import axios, {Canceler, CancelToken, CancelTokenSource} from "axios";
2024-11-29 06:24:50 -05:00
import {message} from "antd";
2024-11-21 09:48:47 -05:00
export const httpReq = axios.create({
// cancelToken: new CancelToken(function (cancel:Canceler) {
// },),
2024-11-29 06:24:50 -05:00
validateStatus: function (status) {
return status >= 200 && status < 300; // default
},
2025-07-10 07:03:22 -04:00
timeout: 10000,
2024-11-29 06:24:50 -05:00
timeoutErrorMessage: "网络连接超时",
2024-11-21 09:48:47 -05:00
withCredentials: false,
})
// 创建一个取消令牌
const cancelTokenSource: CancelTokenSource = axios.CancelToken.source();
2024-11-29 06:24:50 -05:00
// 默认json格式
2024-11-21 09:48:47 -05:00
httpReq.defaults.headers.common['Accept'] = 'application/json';
2024-11-29 06:24:50 -05:00
// 请求前处理
2024-11-25 05:28:24 -05:00
httpReq.interceptors.request.use((config) => {
2024-11-29 06:24:50 -05:00
// 从本地存储中获取 token
const token = localStorage.getItem('platform-security');
2024-11-25 05:28:24 -05:00
if (token) {
2024-11-29 06:24:50 -05:00
config.headers.Authorization = `Bearer ${token}`;
2024-11-25 05:28:24 -05:00
}
2025-07-15 07:04:51 -04:00
config.headers.set("source-client","web")
2024-11-25 05:28:24 -05:00
return config;
},
(error) => {
2024-11-29 06:24:50 -05:00
console.info("interceptors错误提示.request" + error)
2024-11-25 05:28:24 -05:00
return Promise.reject(error);
})
2024-11-29 06:24:50 -05:00
// 响应前处理
2024-11-25 05:28:24 -05:00
httpReq.interceptors.response.use(
(response) => {
// http请求最外层
if (response.status >= 500) {
2024-11-29 06:24:50 -05:00
message.error('系统异常');
2024-11-25 05:28:24 -05:00
} else if (response.status >= 400 && response.status <= 500) {
2024-11-29 06:24:50 -05:00
message.warning('无权限');
2025-07-18 07:02:14 -04:00
}else if(response.data.status.success == false){
message.error(response.data.status.message);
2024-11-25 05:28:24 -05:00
}
return response;
},
(error) => {
2024-11-29 06:24:50 -05:00
if (axios.isCancel(error)) {
message.error('连接取消');
} else if (axios.isAxiosError(error)) {
console.error('Axios Error:', error.message);
if (error.response) {
if (error.response.status >= 500) {
message.error('系统异常');
} else if (error.response.status >= 400 && error.response.status <= 500) {
message.warning('无权限');
window.location.href = '/login';
}
// switch (error.response.status) {
// case 401:
// localStorage.removeItem('authToken');
// window.location.href = '/login';
// break;
// case 403:
// console.error('Forbidden:', error.response.data);
// break;
// case 404:
// console.error('Not Found:', error.response.data);
// break;
// case 500:
// console.error('Internal Server Error:', error.response.data);
// break;
// default:
// console.error('Unknown Error:', error.response.data);
// break;
// }
} else {
message.error('No Response:' + error.message);
}
} else {
console.error('Unknown Error:', error);
2024-11-25 05:28:24 -05:00
}
2024-11-29 06:24:50 -05:00
console.info("interceptors.response错误提示" + error)
2024-11-25 05:28:24 -05:00
return Promise.reject(error);
}
);