Vue 请求拦截 request
import axios from 'axios'
axios.defaults.withCredentials=true;
import store from '@/store/index'
import router from '@/router'
import {
getToken
} from '@/utils/auth'
import NProgress from 'nprogress'
// 是否显示加载圈
NProgress.configure({
showSpinner: false
})
const request = axios.create({
baseURL: process.env.VUE_APP_BASE_URL, // api 的 baseURL
timeout: 60000, //设置请求时长
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
})
//请求拦截器
request.interceptors.request.use(
config => {
if (store.state.token) {
// let each request carry token
// ['X-Token'] is a custom headers key
// please modify it according to the actual situation
// config.headers['X-Token'] = getToken()
if (getToken()) { 请求头
config.headers['Authorization'] = getToken()
}
}
NProgress.start()
return config
},
error => {
return Promise.reject(error)
}
)
//响应拦截器
request.interceptors.response.use(
response => {
if(!response.data.hasOwnProperty("code")){
if (response.data.substring(0,100).indexOf("<html") != -1){ //如果包含这个请求头 DOCTYPE 则代表 需要重新登陆
router.push({
path: '/'
})
}
}
/* console.log(response.data.indexOf("DOCTYPE"),"打印respose")
console.log(response,"打印respose2")*/
NProgress.done()
return response
},
error => {
NProgress.done()
//获取状态码
const status = error.request.status;
//如果是401则跳转到登录页面
if (status === 1001) {
router.push({
path: '/'
})
};
// 如果请求为非200否者默认统一处理
// if (status !== 200 && status !== 400) {
// Message({
// message: JSON.parse(error.request.response).message|| '未知错误',
// type: 'error'
// });
// }
// console.log(error);
return Promise.reject((typeof error.request.response == 'string') ? JSON.parse(error.request.response) : error.request.response)
}
)
export default request
工作中如果有您解决不了的问题或者您花费2小时还没解决的问题,这里可以有偿帮您高效直接解决bug,wx号:18062748486,备注”bug解决“;