import axios from 'axios' import { ElMessage } from 'element-plus' import router from '@/router' // 创建axios实例 const request = axios.create({ baseURL: '/api/v1', timeout: 30000, headers: { 'Content-Type': 'application/json' } }) // 请求拦截器 request.interceptors.request.use( config => { const token = localStorage.getItem('token') if (token) { config.headers.Authorization = `Bearer ${token}` } return config }, error => { return Promise.reject(error) } ) // 响应拦截器 request.interceptors.response.use( response => { const res = response.data if (res.code && res.code !== 200) { ElMessage.error(res.message || '请求失败') return Promise.reject(new Error(res.message || '请求失败')) } return res }, error => { if (error.response) { switch (error.response.status) { case 401: ElMessage.error('登录已过期,请重新登录') localStorage.removeItem('token') router.push('/login') break case 403: ElMessage.error('没有权限访问') break case 404: ElMessage.error('请求资源不存在') break case 500: ElMessage.error('服务器错误') break default: ElMessage.error(error.response.data?.detail || '请求失败') } } else { ElMessage.error('网络错误,请检查网络连接') } return Promise.reject(error) } ) export default request