import axios from 'axios'
|
import myConfig from '@/assets/js/config.js'
|
import router from '@/router'
|
// 创建 axios 实例
|
const service = axios.create({
|
baseURL: myConfig.requestCtx,
|
timeout: myConfig.requestTimeOut // 请求超时时间
|
})
|
|
// 请求拦截器
|
service.interceptors.request.use(
|
(config) => {
|
let token = localStorage.getItem(myConfig.tokenKey)
|
if (token) config.headers['Authorization'] = `bearer ${token}`
|
return config
|
},
|
(error) => {
|
// 发送失败
|
Promise.reject(error)
|
}
|
)
|
|
// 响应拦截器
|
service.interceptors.response.use(
|
(response) => {
|
// dataAxios 是 axios 返回数据中的 data
|
const dataAxios = response.data
|
if (typeof dataAxios.data === 'boolean') {
|
return dataAxios.data
|
}
|
if (response.config.responseType == 'blob') {
|
return dataAxios
|
}
|
const { success } = dataAxios
|
if (dataAxios.currentDate) {
|
sessionStorage.currentDate = new Date(dataAxios.currentDate).getTime()
|
}
|
// 根据 code 进行判断
|
if (success) {
|
return dataAxios.data ? dataAxios.data : dataAxios
|
} else {
|
// 提示错误
|
}
|
},
|
(error) => {
|
if ((error.response && error.response.status == 401) || error.code == 'ERR_NETWORK') {
|
localStorage.removeItem(myConfig.tokenKey)
|
localStorage.removeItem('jesk-userInfo')
|
localStorage.removeItem('alreadyElectronicBook')
|
localStorage.removeItem('alreadyPaperBook')
|
localStorage.removeItem('electronicBookList')
|
localStorage.removeItem('paperBookList')
|
sessionStorage.removeItem('cartNumber')
|
// router.replace({
|
// path: '/home',
|
// query: {
|
// showLogin: '1'
|
// }
|
// })
|
const url = window.location.hash.slice(1)
|
router.push(url)
|
} else {
|
if (error.response && error.response.data && error.response.data.error) {
|
console.error(error.response.data.error.msg)
|
} else {
|
console.error('请求发生错误')
|
}
|
}
|
return Promise.reject(error)
|
}
|
)
|
|
export default service
|