import axios from 'axios'; import { AuthResponse, LoginData, RegisterData, Message } from '../types'; const API_BASE_URL = import.meta.env.VITE_API_URL || 'http://localhost:5000'; const api = axios.create({ baseURL: `${API_BASE_URL}/api`, headers: { 'Content-Type': 'application/json', }, }); // 请求拦截器 - 添加认证token api.interceptors.request.use((config) => { const token = localStorage.getItem('token'); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; }); // 响应拦截器 - 处理认证错误 api.interceptors.response.use( (response) => response, (error) => { if (error.response?.status === 401) { localStorage.removeItem('token'); localStorage.removeItem('user'); window.location.href = '/login'; } return Promise.reject(error); } ); export const authAPI = { login: async (data: LoginData): Promise => { const response = await api.post('/login', data); return response.data; }, register: async (data: RegisterData): Promise => { const response = await api.post('/register', data); return response.data; }, }; export const messageAPI = { getMessages: async (room: string = 'general', limit: number = 50): Promise => { const response = await api.get('/messages', { params: { room, limit } }); return response.data; }, }; export default api;