import Axios from 'axios' import { Message } from 'view-design' import { getToken, setToken, getAdmin } from 'libs/token' // 根路径 import baseURL from 'config/url' const service = Axios.create({ baseURL, // withCredentials: true, // 当跨域请求时发送cookie timeout: 100000 }) // 保存调用栈 // let time = null // 设置请求拦截器,每个请求都会到这里 service.interceptors.request.use( config => { if (getToken()) { // 给每个请求都加上后台需要的信息,可以自定义 config.params = Object.assign({ token: getToken(), user_id: getAdmin().admin_id }, config.params || {}) } // 在发送请求之前还能做点东西 // 拦截器函数, 要求返回config参数 return config }, error => { // 当报错的时候可以打印日志 console.log(error) return Promise.reject(error) } ) // 设置响应拦截器,每个响应都会到这里 service.interceptors.response.use( response => { // 当获得响应数据,可以根据响应的状态码判断后台状态 const { data } = response // 处理后端响应数据状态码不在预设值得情况下,处理异常,这里预设值为2000 if (data.code && data.code != 0) { // 再进一步判断 if (data.code == 3101 || data.code == 3005) { data.code == 3005 && Message.error({ content: 'token过期,请重新登录' }) app.$router.push('/login') setToken('') } else { // 非特定情况 if (data.msg) Message.error({ content: data.msg, background: true }) } // 抛出错误信息 return Promise.reject(data) } else { return Promise.resolve(data) } }, error => { console.log('err' + error) // 帮助debug // Message.error({ // content: '接口报错了,请稍后重试~', // background: true // }) return Promise.reject(error) } ) export default service