重构云文件管理系统
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import axios from 'axios'
|
||||
import axios from 'axios'
|
||||
|
||||
const request = axios.create({
|
||||
baseURL: '/api',
|
||||
@@ -17,9 +17,35 @@ request.interceptors.request.use(
|
||||
)
|
||||
|
||||
request.interceptors.response.use(
|
||||
response => response.data,
|
||||
response => {
|
||||
const res = response.data
|
||||
|
||||
// 如果是二进制数据(blob),直接返回
|
||||
if (response.config.responseType === 'blob') {
|
||||
return res
|
||||
}
|
||||
|
||||
// 统一响应格式: { code, message, data }
|
||||
// code === 200 表示成功,返回 data
|
||||
if (res.code === 200) {
|
||||
return res.data
|
||||
}
|
||||
|
||||
// 业务错误,抛出异常
|
||||
const error = new Error(res.message || '请求失败')
|
||||
error.code = res.code
|
||||
error.response = response
|
||||
return Promise.reject(error)
|
||||
},
|
||||
error => {
|
||||
const status = error.response?.status
|
||||
const data = error.response?.data
|
||||
|
||||
// 如果响应体中有错误信息,优先使用
|
||||
if (data && typeof data === 'object' && data.message) {
|
||||
error.message = data.message
|
||||
error.code = data.code
|
||||
}
|
||||
|
||||
// 只有 401/403 才清理 token 并跳转登录页
|
||||
// 但在登录页时不跳转(避免死循环),登录接口的 401 也不跳转
|
||||
|
||||
Reference in New Issue
Block a user