介绍
axios是一款异步请求组件,支持常用的请求方式,自动的组装请求数据,
尤其和vue使用的时候会更加有优势,
全局拦截器
将axios绑定到Vue实例中,可以在全局使用,
// 全局拦截器 在请求的时候添加加载动作,也可以通过store中的变量控制不同的情况情况触发不同的加载动作。
import axios from 'axios'
import {REST_API} from '../config'
import {Message} from 'iview'
import store from '../store';
axios.defaults.timeout = 60000
axios.defaults.baseURL = REST_API
axios.defaults.showSpin = true //请求加载loading效果
axios.defaults.showMsg = false //请求后是否弹出消息
// Add a request interceptor
axios.interceptors.request.use(function (config) {
// config.headers['Authorization'] = 'Bearer '+store.getters.token
if(store.getters.check){
console.log("lalalla",)
store.state.app.checkShow = true;
}
else if(config.showSpin) {
document.querySelector('#global-spin').style.display = 'block'
}
return config;
}, function (error) {
console.log('>>> 发送失败。', error)
document.querySelector('#global-spin').style.display = 'none'
store.state.app.checkShow = false;
return Promise.reject(error);
})
// Add a response interceptor
axios.interceptors.response.use(function (response) {
document.querySelector('#global-spin').style.display = 'none'
store.state.app.checkShow = false;
store.state.app.check = false
return check(response)
}, function (error) {
check(error.response)
console.log('>>> 返回失败。', error.response)
document.querySelector('#global-spin').style.display = 'none'
store.state.app.checkShow = false;
store.state.app.check = false
return Promise.reject(error);
})
// 实例拦截器
let instance = axios.create()
在instance中添加拦截器,实例中的拦截器不会触发全局的拦截器;
异步请求
Promise
return new Promise(function (reslove, reject) {
if (displayDate === 'none') {
if (type === 'a') {
facade.queryTop15In().then((res) => {
if (res.status === 200) {
reslove(res.data)
// console.log("displayDate 先执行")
}
})
} else if (type === 'b') {
facade.queryTop15Out().then((res) => {
if (res.status === 200) {
reslove(res.data)
// this.setState({
// top15Data:res.data
// })
}
})
}
} else {
console.log("top15Data 执行这里?")
this.state.top15Data = [],
this.setState({
top15Data: [],
})
}
})
前后台分离的重定向
https://blog.csdn.net/li_gameover/article/details/79917473
整体思路: 在后台设置filter,进行校验token,
如果没有检验通过,设置响应头,在响应头添加一个字段,表明事重定向,
前台 使用拦截器,可以进行统一的拦截解析,进行重新路由