blob: 0e06f0a4164c5e7973d7709aa4490780cb98fc8a [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')
vulgar5201c4a15b12025-06-06 13:55:09 +080018 console.log('📤 添加 token 到请求头:', token)
Xing Jinwenff16b1e2025-06-05 00:29:26 +080019 if (token) {
20 config.headers.Authorization = `Bearer ${token}`
21 }
22
23 console.log('🚀 发送请求:', config.method?.toUpperCase(), config.url)
24 console.log('📤 请求数据:', config.data)
vulgar5201c4a15b12025-06-06 13:55:09 +080025 console.log('🔍 VUE_APP_BASE_API:', process.env.VUE_APP_BASE_API)
26 console.log('🔍 VUE_APP_BACKEND:', process.env.VUE_APP_BACKEND)
Xing Jinwenff16b1e2025-06-05 00:29:26 +080027
28 return config
29 },
30 error => {
31 console.error('❌ 请求错误:', error)
32 return Promise.reject(error)
33 }
34)
35
36request.interceptors.response.use(
37 response => {
38 console.log('✅ 响应成功:', response.status, response.data)
39 return response.data
40 },
41 error => {
42 console.error('❌ 响应错误:', error)
43
44 if (error.response) {
45 const { status, data } = error.response
46
47 switch (status) {
48 case 401:
49 localStorage.removeItem('token')
50 localStorage.removeItem('isLoggedIn')
51 localStorage.removeItem('userInfo')
52 ElMessage.error('登录已过期,请重新登录')
53 router.push('/login')
54 break
55 case 403:
56 ElMessage.error('权限不足')
57 break
58 case 404:
59 ElMessage.error('API接口不存在')
60 console.error('❌ 请求的URL:', error.config.url)
61 break
62 case 500:
63 ElMessage.error('服务器内部错误')
64 break
65 default:
66 const errorMessage = data?.message || `请求失败 (${status})`
67 ElMessage.error(errorMessage)
68 }
69 } else if (error.request) {
70 ElMessage.error('无法连接到服务器,请检查网络')
71 } else {
72 ElMessage.error('请求配置错误')
73 }
74
75 return Promise.reject(error)
76 }
77)
78
79export default request