import axios from 'axios' import { Message } from 'element-ui'; import Router from '../router' /** * 使用自定义配置新建一个 axios 实例 * baseURL = 请求路径 * timeout = 请求超时配置 */ const request = axios.create({ baseURL: process.env.BASE_API, // baseURL: 'http://81.70.84.72:30047/', // baseURL: baseUrl+":30047/", timeout: process.env.TIME_OUT, method: "post", type: "JSON" }) // let toast = null /** * request拦截器 * 可以在这里添加 Header 头部信息,等 */ request.interceptors.request.use(config => { // 显示加载 // Spin.show() // 获取accessToken // 添加请求头信息,处理安全性问题 let accessToken = "1111111" if (accessToken !== undefined) { config.headers.Authorization = accessToken } else { config.headers.Authorization = 'Basic dnVlOnZ1ZQ==' } // 添加时间戳防止IE不刷新页面 if (config.type != 'FORM') { if (config.method == 'post') { config.data = { ...config.data } } else if (config.method == 'get') { // config.params = { // ...config.params, // // _t: Date.parse(new Date()) / 1000 // } // config.params = params } } else { let formData = '' Object.keys(config.data).forEach((key) => { formData += key + '=' + config.data[key] + '&' }) config.data = formData config.headers['Accept'] = 'application/json' config.headers['Content-Type'] = 'application/x-www-form-urlencoded' } return config }, error => { // 处理请求错误 Promise.reject(error) }) /** * 下面的注释为通过response自定义code来标示请求状态,当coBASE_APIde返回如下情况为权限有问题,登出并返回到登录页 * 如通过xmlhttprequest 状态码标识 逻辑可写在下面error中 */ // 响应拦截器 request.interceptors.response.use( response => { // 隐藏加载 // Spin.hide() // 请求成功处理 // if (response.data.status === 50000) { // Message.error('凭证过期,请重新登录') // Router.push('/') // } return response.data }, error => { // 隐藏加载 // Spin.hide() // 处理请求错误 const response = error.response if (response != undefined && response.data) { // if (response.data.status == '401' && response.status == 401) { // Message.error('凭证过期,请重新登录') // // Router.push('/') // } else if (response.status == 500) { // Message.error(response.data.message) // } else if (response.status != 200) { // Message.error(response.data.message) // } return response.data } else if (response) { switch (response.status) { case 400: Message.error('错误的请求') break case 401: Message.error('凭证过期,请重新登录') break case 403: Message.error('拒绝访问') break case 404: Message.error('请求错误,未找到该资源') break case 405: Message.error('请求方法未允许') break case 408: Message.error('请求超时') break case 500: Message.error('服务器端出错') break case 501: Message.error('网络错误,请检查网络') break case 502: Message.error('网络错误,请检查网络') break case 503: Message.error('服务不可用') break case 504: Message.error('网络请求超时') break case 505: Message.error('http版本不支持该请求') break default: Message.error(`连接错误${error.response.status}`) } } else { Message.error(error.message) } // 弹出层 return Promise.reject(error) } ) export default request