import axios from 'axios'const baseURL = process.env.NODE_ENV === 'development' ? 'http://localhost:4000' : 'http://localhost:4000'axios.interceptors.request.use( config => { let requestName = config.data.requestName if (requestName) { if (axios[requestName] && axios[requestName].cancel) { axios[requestName].cancel(`${requestName} 请求被取消`) } config.cancelToken = new axios.CancelToken(c => { axios[requestName] = {} axios[requestName].cancel = c }) } return config }, error => { return Promise.reject(error) })axios.interceptors.response.use( config => { return config }, error => { console.log(error) let errMsg = '' if (error && error.response) { const map = new Map([ [400, '错误请求'], [401, '未授权,请重新登录'], [403, '拒绝访问'], [404, '请求错误,未找到该资源'], [405, '请求方法未允许'], [408, '请求超时'], [500, '服务器端出错'], [501, '网络未实现'], [502, '网络错误'], [503, '服务不可用'], [504, '网络超时'], [505, 'http版本不支持该请求'] ]) const defaultErrorMsg = `连接错误,服务器返回的状态码为 ${error.response.status}` errMsg = map.get(error.response.status) || defaultErrorMsg } else { errMsg = "连接到服务器失败" } return Promise.reject(errMsg) })export default ({ url, data = {}, params = {}, ...args }) => { return new Promise((resolve, reject) => { axios({ baseURL, url, params, data: { ...data, requestName: url.split('/').slice(-1).pop() }, ...args }) .then(res => resolve(res)) .catch(err => { console.log(err) reject(err) }) })}/** get 请求: await request({ method: 'get', url: '/user/12345', params: { name: 'Bob', age: 20 } }) post 请求: await request({ method: 'post', url: '/user/12345', data: { name: 'Bob', age: 20 } }) */