blob: 239e97ae4c1e05941ac31ef89cebbe83540da560 [file] [log] [blame]
Xing Jinwenff16b1e2025-06-05 00:29:26 +08001import axios from 'axios'
2import { ElMessage } from 'element-plus'
3import router from '@/router'
vulgar5201cb5ad602025-06-05 19:13:38 +08004//test
Xing Jinwenff16b1e2025-06-05 00:29:26 +08005const request = axios.create({
6 // 关键:不要设置baseURL,或者设置为空字符串
7 // 这样请求会发送到当前域名(8080),然后被代理转发到8081
vulgar5201ef2b41e2025-06-05 19:09:44 +08008 baseURL: process.env.VUE_APP_BASE_API || '/api',
Xing Jinwenff16b1e2025-06-05 00:29:26 +08009 timeout: 10000,
10 headers: {
vulgar5201ef2b41e2025-06-05 19:09:44 +080011 // 'Content-Type': 'application/json'
Xing Jinwenff16b1e2025-06-05 00:29:26 +080012 }
13})
14
15request.interceptors.request.use(
16 config => {
17 const token = localStorage.getItem('token')
18 if (token) {
19 config.headers.Authorization = `Bearer ${token}`
20 }
21
22 console.log('🚀 发送请求:', config.method?.toUpperCase(), config.url)
23 console.log('📤 请求数据:', config.data)
24
25 return config
26 },
27 error => {
28 console.error('❌ 请求错误:', error)
29 return Promise.reject(error)
30 }
31)
32
33request.interceptors.response.use(
34 response => {
35 console.log('✅ 响应成功:', response.status, response.data)
36 return response.data
37 },
38 error => {
39 console.error('❌ 响应错误:', error)
40
41 if (error.response) {
42 const { status, data } = error.response
43
44 switch (status) {
45 case 401:
46 localStorage.removeItem('token')
47 localStorage.removeItem('isLoggedIn')
48 localStorage.removeItem('userInfo')
49 ElMessage.error('登录已过期,请重新登录')
50 router.push('/login')
51 break
52 case 403:
53 ElMessage.error('权限不足')
54 break
55 case 404:
56 ElMessage.error('API接口不存在')
57 console.error('❌ 请求的URL:', error.config.url)
58 break
59 case 500:
60 ElMessage.error('服务器内部错误')
61 break
62 default:
63 const errorMessage = data?.message || `请求失败 (${status})`
64 ElMessage.error(errorMessage)
65 }
66 } else if (error.request) {
67 ElMessage.error('无法连接到服务器,请检查网络')
68 } else {
69 ElMessage.error('请求配置错误')
70 }
71
72 return Promise.reject(error)
73 }
74)
75
76export default request