- 安装axios
yarn add axios
- 实例化axios--设置baseURL,超时时间
const instance = axios.create({
baseURL: '',
timeout: 5000
})
- 请求拦截器-全局注入token
instance.interceptors.request.use(config => {
const { token } = store.state.user.profile
if (token) config.headers.Authorization = `Bearer ${token}`
return config
}, e => Promise.reject(e))
- 响应拦截器-token失效跳转到登录页,登录后返回到失效页面
instance.interceptors.response.use(res => res.data, e => {
if (e.response && e.response.status === 401) {
const redirectUrl = encodeURIComponent(router.currentRoute.value.fullPath)
router.push('/login?redirectUrl=', redirectUrl)
}
return Promise.reject(e)
})
- 封装请求
const request = (url, method, submitData) => {
return instance({
url,
method,
[method.toLowerCase() === 'get' ? 'params' : 'data']: submitData
})
}
- 导出请求
export default request