axios使用中的奇技淫巧 发表于 2018-06-10 | 分类于 前端杂谈 response拦截器自动刷新token并重新发起请求业务场景:后台api接口返回code:-2 就代表着token不存在或者失效 1234567891011121314151617181920212223242526272829303132// respone拦截器service .interceptors .response .use(response => { const res = response.data if (response.data.code === -2) { const originalRequest = response.config//获取请求的config配置 const token = sessionStorage.getItem('token') if (token && token !== '') { //token不存在的时候,会在router before中获取,这里只针对token失效的情况 return getToken().then(async(data) => { //重新获取token sessionStorage.setItem('token', data.data.token) originalRequest.params.token = data.data.token //由于Promise对象不支持返回值,这里选用了es新特性 async await 关键字 let res = await axios(originalRequest) return res.data }) } } if (res.code !== 0 && res.code !== -2) { Toast({mes: res.msg, timeout: 1500, icon: 'error'}) return Promise.reject('error') } else { return response.data } }, error => { Toast({mes: error, timeout: 1500, icon: 'error'}) return Promise.reject(error) }) 前端手艺工坊