import axios from 'axios' import { ElMessage } from 'element-plus' // 创建axios实例 const request = axios.create({ baseURL: 'http://localhost:9291', timeout: 30000, headers: { 'Content-Type': 'application/json;charset=UTF-8' } }) // 请求拦截器 request.interceptors.request.use( config => { // 可以在这里添加token等认证信息 // const token = localStorage.getItem('token') // if (token) { // config.headers['Authorization'] = `Bearer ${token}` // } return config }, error => { console.error('请求错误:', error) return Promise.reject(error) } ) // 响应拦截器 request.interceptors.response.use( response => { const res = response.data // 根据实际后端返回格式调整 // 假设后端返回格式为 { code: 200, data: {}, message: '' } if (res.code !== undefined && res.code !== 200) { } return res }, error => { console.error('响应错误:', error) let message = '网络错误' if (error.response) { switch (error.response.status) { case 400: message = '请求错误' break case 401: message = '未授权,请重新登录' break case 403: message = '拒绝访问' break case 404: message = '请求地址不存在' break case 500: message = '服务器内部错误' break default: message = error.response.data?.message || '请求失败' } } else if (error.request) { message = '网络连接失败' } ElMessage.error(message) return Promise.reject(error) } ) // 导出常用的请求方法 export const http = { get(url, params, config = {}) { return request.get(url, { params, ...config }) }, post(url, data, config = {}) { return request.post(url, data, config) }, put(url, data, config = {}) { return request.put(url, data, config) }, delete(url, params, config = {}) { return request.delete(url, { params, ...config }) }, // 用于文件上传 upload(url, file, config = {}) { const formData = new FormData() formData.append('file', file) return request.post(url, formData, { headers: { 'Content-Type': 'multipart/form-data' }, ...config }) } } export default request