San3yuan | 4d0e803 | 2025-04-04 17:21:40 +0800 | [diff] [blame] | 1 | import axios from 'axios' |
| 2 | import type { AxiosRequestConfig, AxiosResponse } from 'axios' |
| 3 | |
| 4 | const instance = axios.create({ |
| 5 | baseURL: process.env.API_BASE_URL, |
| 6 | timeout: 10000, |
| 7 | headers: { |
| 8 | 'Content-Type': 'application/json' |
| 9 | } |
| 10 | }) |
| 11 | |
| 12 | // 请求拦截器 |
| 13 | instance.interceptors.request.use( |
| 14 | (config) => { |
San3yuan | a2ee30b | 2025-06-05 21:20:17 +0800 | [diff] [blame^] | 15 | console.log('Request Config:', config) |
San3yuan | 4d0e803 | 2025-04-04 17:21:40 +0800 | [diff] [blame] | 16 | // 添加认证 token |
San3yuan | 6f2ed69 | 2025-04-16 20:24:49 +0800 | [diff] [blame] | 17 | const token = localStorage.getItem('token') |
San3yuan | 4d0e803 | 2025-04-04 17:21:40 +0800 | [diff] [blame] | 18 | if (token) { |
| 19 | config.headers.Authorization = `Bearer ${token}` |
| 20 | } |
| 21 | return config |
| 22 | }, |
| 23 | (error) => { |
| 24 | return Promise.reject(error) |
| 25 | } |
| 26 | ) |
| 27 | |
| 28 | // 响应拦截器 |
| 29 | instance.interceptors.response.use( |
| 30 | (response) => { |
San3yuan | 4d0e803 | 2025-04-04 17:21:40 +0800 | [diff] [blame] | 31 | // 统一处理响应数据格式 |
| 32 | if (response.status === 200) { |
| 33 | return response.data |
| 34 | } |
| 35 | return Promise.reject(response.data) |
| 36 | }, |
| 37 | (error) => { |
| 38 | // 统一错误处理 |
| 39 | console.error('API Error:', error.response?.status, error.message) |
| 40 | return Promise.reject(error) |
| 41 | } |
| 42 | ) |
| 43 | |
| 44 | export default instance |