//引入axios import axios from 'axios' let cancel ,promiseArr = {} const CancelToken = axios.CancelToken; //请求拦截器 // 在发送请求之前做些什么 axios.interceptors.request.use(config => { //发起请求时,取消掉当前正在进行的相同请求 if (promiseArr[config.url]) { promiseArr[config.url]('操作取消') promiseArr[config.url] = cancel } else { promiseArr[config.url] = cancel } return config }, error => { return Promise.reject(error) }) //响应拦截器即异常处理,对响应数据做点什么 axios.interceptors.response.use(response => { return response }, err => { err.messages=''; if (err && err.response) { switch (err.response.status) { case 400: err.messages = '错误请求' break; case 401: err.messages = '未授权,请重新登录' break; case 403: err.messages = '拒绝访问' break; case 404: err.messages = '请求错误,未找到该资源' break; case 405: err.messages = '请求方法未允许' break; case 408: err.messages = '请求超时' break; case 500: err.messages = '服务器端出错' break; case 501: err.messages = '网络未实现' break; case 502: err.messages = '网络错误' break; case 503: err.messages = '服务不可用' break; case 504: err.messages = '网络超时' break; case 505: err.messages = 'http版本不支持该请求' break; default: err.messages = `连接错误${err.response.status}` } } else { err.messages = "连接到服务器失败"; } //message.err(err.message) //return Promise.reject(err.response) return Promise.resolve(err) }) //基础url前缀 //axios.defaults.baseURL = '/api' axios.defaults.baseURL = 'http://10.0.2.31:8096/'; //设置默认请求头 axios.defaults.headers = { 'X-Requested-With': 'XMLHttpRequest' } axios.defaults.timeout = 10000 export default { //get请求 get (url,param) { return new Promise((resolve,reject) => { axios({ method: 'get', url, params: param, cancelToken: new CancelToken(c => { cancel = c }) }).then(res => { resolve(res) }) }) }, //post请求 post (url,param) { return new Promise((resolve,reject) => { axios({ method: 'post', url, data: param, cancelToken: new CancelToken(c => { cancel = c }) }).then(res => { resolve(res) }) }) } }