import axios from 'axios' import { ElMessage } from 'element-plus' import router from '@/router' // 创建axios实例 const api = axios.create({ baseURL: 'http://localhost:8080/api', timeout: 10000, withCredentials: true, headers: { 'Content-Type': 'application/json' } }) // 请求拦截器 api.interceptors.request.use( (config) => { // 使用JWT认证,添加Authorization头 const token = sessionStorage.getItem('token') if (token) { config.headers.Authorization = `Bearer ${token}` } return config }, (error) => { console.error('请求拦截器错误:', error) return Promise.reject(error) } ) // 响应拦截器 api.interceptors.response.use( (response) => { return response.data }, (error) => { if (error.response) { const { status, data } = error.response switch (status) { case 401: ElMessage.error('未授权,请重新登录') sessionStorage.removeItem('token') sessionStorage.removeItem('user') // 使用Vue Router进行路由跳转,避免页面刷新 router.push('/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