GPU_Web/src/utils/index.ts
2026-01-06 14:20:31 +08:00

54 lines
1.5 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.

// src/utils/request.ts
import axios, { AxiosInstance, InternalAxiosRequestConfig } from 'axios';
// 从环境变量读取基础 URL
const BASE_URL = import.meta.env.VITE_API_BASIC
console.log('API Basic URL:',import.meta.env.VITE_API_BASIC);
console.log('All env:', import.meta.env);
// 创建 axios 实例
const request: AxiosInstance = axios.create({
baseURL: BASE_URL,
timeout: 10000, // 10 秒超时
withCredentials: false, // 跨域请求时发送 cookies
headers: {
'Content-Type': 'application/json',
},
});
// 请求拦截器(可选:加 token、loading 等)
request.interceptors.request.use(
(config: InternalAxiosRequestConfig) => {
// 例如:从 localStorage 获取 token
const token = localStorage.getItem('token');
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
},
(error) => {
return Promise.reject(error);
}
);
// 响应拦截器统一处理错误、code 等)
request.interceptors.response.use(
(response) => {
// 假设后端返回格式为 { code: 200, data: ..., message: '' }
const { code, data, message } = response.data;
console.log('Response Data:', response.data);
if (code === 1) {
return data;
} else {
// 可抛出业务错误
return Promise.reject(new Error(message || '请求失败'));
}
},
(error) => {
// 网络错误 or 超时等
return Promise.reject(error.response.data);
}
);
export default request;