Files
backmanagerweb/src/api/request.js
2026-06-25 21:49:55 +08:00

54 lines
1.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import axios from 'axios'
import { ElMessage } from 'element-plus'
import router from '../router'
// 创建 axios 实例
const request = axios.create({
baseURL: '/api',
timeout: 10000
})
// 请求拦截器:自动添加 token
request.interceptors.request.use(
(config) => {
const token = localStorage.getItem('token')
if (token) {
config.headers.Authorization = `Bearer ${token}`
}
return config
},
(error) => {
return Promise.reject(error)
}
)
// 响应拦截器统一处理错误config.quiet = true 时不弹窗)
request.interceptors.response.use(
(response) => {
return response.data
},
(error) => {
const status = error.response?.status
const message = error.response?.data?.message || '请求失败'
const quiet = error.config?.quiet
const isLogin = error.config?.url?.includes('/user/login')
if (!quiet) {
if (status === 401) {
localStorage.removeItem('token')
localStorage.removeItem('userInfo')
router.push('/login')
ElMessage.error('登录已过期,请重新登录')
} else if (status === 403 && !isLogin) {
ElMessage.error('权限不足')
} else {
ElMessage.error(message)
}
}
return Promise.reject(error)
}
)
export default request