应用场景:
1:每个请求都带上的参数,比如token,时间戳等。
2:对返回的状态进行判断,比如token是否过期、访问资源是否存在等
import axios from 'axios'
// 引入全局状态管理---主要用于获取登录状态,如果没有使用vuex,则通过本地存储获取
import store from '@/store/store.js'
// 创建 axios 实例,一般在项目中会在要给单独的JS中模块中创建配置
let request = axios.create({
timeout: 5000, // 设置请求的超时时间
baseURL: 'xxxx' // 请求的根路径
})
// 配置请求拦截器
request.interceptors.request.use(config => {
// 判断是否登录----使用vuex
if (store.state.token) {
// 配置请求头---请求头添加token字段
config.headers.Authorization = store.state.token
}
/* 没有使用vuex,从本地存储中获取
if (window.localStrong.getItem('token')) {
config.headers.Authorization = window.localStrong.getItem('token')
}
*/
return config
})
// 配置响应拦截器
request.interceptors.response.use(
// 响应成功
res => {
return res
},
// 失败
err => {
if (err && err.response) {
switch (err.response.status) {
case 400:
// 请求出错
break
case 401:
// 授权失败
break
case 403:
// 拒绝访问
break
case 404:
// 请求错误,资源不存在
break
case 500:
// 服务器端错误
break
default:
// 其它错误
}
}
return Promise.reject(err.response)
}
)