1
0
mirror of https://github.com/zclzone/vue-naive-admin.git synced 2025-12-28 04:00:22 +08:00
Files
vue-naive-admin/src/utils/http/interceptors.js
2022-07-13 22:58:09 +08:00

72 lines
1.7 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 { getToken } from '@/utils/token'
import { toLogin } from '@/utils/auth'
import { isNullOrUndef } from '@/utils/is'
import { isWithoutToken } from './helpers'
export function reqResolve(config) {
// 防止缓存给get请求加上时间戳
if (config.method === 'get') {
config.params = { ...config.params, t: new Date().getTime() }
}
// 处理不需要token的请求
if (isWithoutToken(config)) {
return config
}
const token = getToken()
if (!token) {
// * 未登录或者token过期的情况下,跳转登录页重新登录
toLogin()
return Promise.reject({ code: '-1', message: '未登录' })
}
/**
* * 加上 token
* ! 认证方案: JWT Bearer
*/
config.headers.Authorization = config.headers.Authorization || 'Bearer ' + token
return config
}
export function reqReject(error) {
return Promise.reject(error)
}
export function repResolve(response) {
return response?.data
}
export function repReject(error) {
let { code, message } = error.response?.data || {}
if (isNullOrUndef(code)) {
// 未知错误
code = -1
message = '接口异常!'
} else {
/**
* TODO 此处可以根据后端返回的错误码自定义框架层面的错误处理
*/
switch (code) {
case 400:
message = message || '请求参数错误'
break
case 401:
message = message || '登录已过期'
break
case 403:
message = message || '没有权限'
break
case 404:
message = message || '资源或接口不存在'
break
default:
message = message || '未知异常'
break
}
}
console.error(`${code}${error}`)
return Promise.resolve({ code, message, error })
}