Files
ipad/src/api/request.ts
2026-01-07 17:23:17 +08:00

84 lines
2.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import axios from 'axios';
import type { AxiosInstance, AxiosResponse } from 'axios';
// API 配置
const API_CONFIG = {
// 内网地址HTTP
INTERNAL_URL: 'http://10.1.5.118:8077/platform-api',
// 外网地址HTTPS
EXTERNAL_URL: 'https://apihis.circleharmonyhospital.cn:8982/platform-api',
// 默认使用外网地址,可根据环境变量切换
// 开发环境使用内网,生产环境使用外网
BASE_URL: import.meta.env.NODE_ENV === 'development'
? 'http://10.1.5.118:8077/platform-api'
: 'http://apihis.circleharmonyhospital.cn:8982/platform-api',
// 请求超时时间120秒
TIMEOUT: 120000,
};
// 创建 axios 实例
const request: AxiosInstance = axios.create({
baseURL: API_CONFIG.BASE_URL,
timeout: API_CONFIG.TIMEOUT,
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
});
// 请求拦截器
request.interceptors.request.use(
(config) => {
// 可以在这里添加 token 等认证信息
// const token = localStorage.getItem('token');
// if (token && config.headers) {
// config.headers.Authorization = `Bearer ${token}`;
// }
return config;
},
(error) => {
return Promise.reject(error);
}
);
// 响应拦截器
request.interceptors.response.use(
(response: AxiosResponse) => {
return response;
},
(error) => {
// 统一错误处理
if (error.response) {
const { status, data } = error.response;
switch (status) {
case 400:
console.error('请求参数错误', data);
break;
case 401:
console.error('未授权,请重新登录', data);
// 可以在这里处理登录跳转
break;
case 403:
console.error('拒绝访问', data);
break;
case 404:
console.error('请求地址不存在', data);
break;
case 500:
console.error('服务器内部错误', data);
break;
default:
console.error('请求失败', data);
}
} else if (error.request) {
console.error('请求超时或网络错误');
} else {
console.error('请求配置错误', error.message);
}
return Promise.reject(error);
}
);
export default request;
export { API_CONFIG };