import axios from 'axios'
import { Message } from 'element-ui'
import store from '@/store'
import { getTokenTime } from '@/utils/auth'
import router from '@/router'
const timeout = 3600
console.log(process.env)
// 创建axios实例
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API
})
\
// 请求拦截器
service.interceptors.request.use(config => {
// 请求配置信息
const token = store.getters.token
if (token) {
// 检查token是否过期
if (isCheckTimeOUt()) {
store.commit('user/logout')
router.push('/login')
return Promise.reject(new Error('登录过期'))
}
config.headers.Authorization = 'Bearer ' + token
}
return config
})
\
// 响应拦截器
service.interceptors.response.use(res => {
const { success, data, message } = res.data
if (success) {
return data
}
Message.error(message)
// 什么都没做 默认就会进入成功
return Promise.reject(new Error('接口异常'))
}, err => {
// 响应错误
console.dir(err)
let text = null
if (err.response && err.response.data && err.response.data.code === 10002) {
// 当等于10002的时候 表示 后端告诉我token超时了
store.dispatch('user/logout') // 登出action 删除token
router.push('/login')
text = '登录过期'
}
if (err.response && err.response.status === 404) {
text = '亲,资源不存在'
}
Message.error(text || err.message)
// 什么都没做 默认就会进入成功
// return Promise.reject不在进入下一个then进去catch
return Promise.reject(new Error(err))
}
)
function isCheckTimeOUt() {
const currentTime = Date.now()
const tokenTime = getTokenTime()
return ((currentTime - tokenTime) / 1000) > timeout
}
export default service