perf: axios
parent
c8823752d0
commit
6eddbffd8c
|
@ -4,6 +4,8 @@ import qs from 'qs'
|
||||||
import { config } from '@/config/axios/config'
|
import { config } from '@/config/axios/config'
|
||||||
import { getAccessToken, getRefreshToken, getTenantId } from '@/utils/auth'
|
import { getAccessToken, getRefreshToken, getTenantId } from '@/utils/auth'
|
||||||
import errorCode from './errorCode'
|
import errorCode from './errorCode'
|
||||||
|
import { useI18n } from '@/hooks/web/useI18n'
|
||||||
|
const { t } = useI18n()
|
||||||
|
|
||||||
const tenantEnable = import.meta.env.VITE_APP_TENANT_ENABLE
|
const tenantEnable = import.meta.env.VITE_APP_TENANT_ENABLE
|
||||||
const BASE_URL = import.meta.env.VITE_BASE_URL
|
const BASE_URL = import.meta.env.VITE_BASE_URL
|
||||||
|
@ -18,8 +20,11 @@ const ignoreMsgs = [
|
||||||
// 是否显示重新登录
|
// 是否显示重新登录
|
||||||
export const isRelogin = { show: false }
|
export const isRelogin = { show: false }
|
||||||
// Axios 无感知刷新令牌,参考 https://www.dashingdog.cn/article/11 与 https://segmentfault.com/a/1190000020210980 实现
|
// Axios 无感知刷新令牌,参考 https://www.dashingdog.cn/article/11 与 https://segmentfault.com/a/1190000020210980 实现
|
||||||
|
// 请求队列
|
||||||
|
// const requestList = []
|
||||||
// 是否正在刷新中
|
// 是否正在刷新中
|
||||||
let isRefreshToken = false
|
let isRefreshToken = false
|
||||||
|
|
||||||
export const PATH_URL = base_url[import.meta.env.VITE_API_BASEPATH]
|
export const PATH_URL = base_url[import.meta.env.VITE_API_BASEPATH]
|
||||||
|
|
||||||
// 创建axios实例
|
// 创建axios实例
|
||||||
|
@ -95,13 +100,17 @@ service.interceptors.response.use(
|
||||||
if (!getRefreshToken()) {
|
if (!getRefreshToken()) {
|
||||||
return handleAuthorized()
|
return handleAuthorized()
|
||||||
}
|
}
|
||||||
|
// 2. 进行刷新访问令牌
|
||||||
|
// TODO: 引入refreshToken会循环依赖报错
|
||||||
}
|
}
|
||||||
} else if (code === 500) {
|
} else if (code === 500) {
|
||||||
ElMessage.error(msg)
|
ElMessage.error(t('sys.api.errMsg500'))
|
||||||
return Promise.reject(new Error(msg))
|
return Promise.reject(new Error(msg))
|
||||||
} else if (code === 901) {
|
} else if (code === 901) {
|
||||||
ElMessage.error(
|
ElMessage.error(
|
||||||
'<div>演示模式,无法进行写操作</div>' +
|
'<div>' +
|
||||||
|
t('sys.api.errMsg901') +
|
||||||
|
'</div>' +
|
||||||
'<div> </div>' +
|
'<div> </div>' +
|
||||||
'<div>参考 https://doc.iocoder.cn/ 教程</div>' +
|
'<div>参考 https://doc.iocoder.cn/ 教程</div>' +
|
||||||
'<div> </div>' +
|
'<div> </div>' +
|
||||||
|
@ -126,11 +135,11 @@ service.interceptors.response.use(
|
||||||
console.log('err' + error) // for debug
|
console.log('err' + error) // for debug
|
||||||
let { message } = error
|
let { message } = error
|
||||||
if (message === 'Network Error') {
|
if (message === 'Network Error') {
|
||||||
message = '后端接口连接异常'
|
message = t('sys.api.errorMessage')
|
||||||
} else if (message.includes('timeout')) {
|
} else if (message.includes('timeout')) {
|
||||||
message = '系统接口请求超时'
|
message = t('sys.api.apiTimeoutMessage')
|
||||||
} else if (message.includes('Request failed with status code')) {
|
} else if (message.includes('Request failed with status code')) {
|
||||||
message = '系统接口' + message.substr(message.length - 3) + '异常'
|
message = t('sys.api.apiRequestFailed') + message.substr(message.length - 3)
|
||||||
}
|
}
|
||||||
ElMessage.error(message)
|
ElMessage.error(message)
|
||||||
return Promise.reject(error)
|
return Promise.reject(error)
|
||||||
|
@ -139,9 +148,9 @@ service.interceptors.response.use(
|
||||||
function handleAuthorized() {
|
function handleAuthorized() {
|
||||||
if (!isRelogin.show) {
|
if (!isRelogin.show) {
|
||||||
isRelogin.show = true
|
isRelogin.show = true
|
||||||
ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
|
ElMessageBox.confirm(t('sys.api.timeoutMessage'), t('common.confirmTitle'), {
|
||||||
confirmButtonText: '重新登录',
|
confirmButtonText: t('login.relogin'),
|
||||||
cancelButtonText: '取消',
|
cancelButtonText: t('common.cancel'),
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
@ -151,6 +160,6 @@ function handleAuthorized() {
|
||||||
isRelogin.show = false
|
isRelogin.show = false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
|
return Promise.reject(t('sys.api.timeoutMessage'))
|
||||||
}
|
}
|
||||||
export { service }
|
export { service }
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
import { Layout } from '@/utils/routerHelper'
|
|
||||||
import { useI18n } from '@/hooks/web/useI18n'
|
|
||||||
const { t } = useI18n()
|
|
||||||
|
|
||||||
const errorRouter = [
|
|
||||||
{
|
|
||||||
path: '/error',
|
|
||||||
component: Layout,
|
|
||||||
redirect: '/error/404',
|
|
||||||
name: 'Error',
|
|
||||||
meta: {
|
|
||||||
title: t('router.errorPage'),
|
|
||||||
icon: 'ci:error',
|
|
||||||
alwaysShow: true
|
|
||||||
},
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
path: '404-demo',
|
|
||||||
component: () => import('@/views/Error/404.vue'),
|
|
||||||
name: '404Demo',
|
|
||||||
meta: {
|
|
||||||
title: '404'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: '403-demo',
|
|
||||||
component: () => import('@/views/Error/403.vue'),
|
|
||||||
name: '403Demo',
|
|
||||||
meta: {
|
|
||||||
title: '403'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: '500-demo',
|
|
||||||
component: () => import('@/views/Error/500.vue'),
|
|
||||||
name: '500Demo',
|
|
||||||
meta: {
|
|
||||||
title: '500'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
export default errorRouter
|
|
Loading…
Reference in New Issue