import axios from 'axios' import { ElMessage } from 'element-plus' import auth from '@/utils/auth' // 创建axios实例 const api = axios.create({ baseURL: import.meta.env.VITE_API_BASE_URL || '/api/v1', timeout: 10000, headers: { 'Content-Type': 'application/json' } }) // 请求拦截器 api.interceptors.request.use( (config) => { // 添加token到请求头 const token = auth.getToken() if (token) { config.headers.Authorization = `Bearer ${token}` } return config }, (error) => { return Promise.reject(error) } ) // 响应拦截器 api.interceptors.response.use( (response) => { return response }, (error) => { const { response } = error if (response) { const { status, data } = response switch (status) { case 401: // 未授权,清除token并跳转到登录页 auth.logout() ElMessage.error('登录已过期,请重新登录') window.location.href = '/login' break case 403: ElMessage.error('没有权限访问该资源') break case 404: ElMessage.error('请求的资源不存在') break case 500: ElMessage.error('服务器内部错误') break default: ElMessage.error(data?.message || '请求失败') } } else { ElMessage.error('网络连接失败,请检查网络设置') } return Promise.reject(error) } ) export default api