/* * @Descripttion: * @version: * @Author: 牛夏蕊 * @Date: 2023-04-01 11:28:21 * @LastEditors: Please set LastEditors * @LastEditTime: 2023-04-01 15:32:19 */ import axios from 'axios' import { Message } from 'element-ui' axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' // 创建axios实例 const service = axios.create({ // axios中请求配置有baseURL选项,表示请求URL公共部分 // baseURL: process.env.VUE_APP_BASE_API, // 超时 timeout: 100000 }) // request拦截器 service.interceptors.request.use(config => { return config }, errorHandler) // 响应拦截器 service.interceptors.response.use(res => { // 未设置状态码则默认成功状态 if (res.data.hasOwnProperty('success') && !res.data.success) { Message({ message: res.data.message, type: 'error', duration: 5 * 1000 }) } return res.data; }, error => { console.log('err' + error) let { message } = error; if (message == "Network Error") { message = "后端接口连接异常"; } else if (message.includes("timeout")) { message = "系统接口请求超时"; } else if (message.includes("Request failed with status code")) { message = "系统接口" + message.substr(message.length - 3) + "异常"; } Message({ message: message, type: 'error', duration: 5 * 1000 }) return Promise.reject(error) } ) // 异常拦截处理器 const errorHandler = (error) => { // 错误提醒 var msgInfo = '服务器错误'; if (error && error.response) { switch (error.response.status) { case 400: msgInfo = '请求错误' break case 401: msgInfo = '未授权,请登录' break case 403: msgInfo = '拒绝访问' break case 404: msgInfo = `请求地址出错` break case 408: msgInfo = '请求超时' break case 500: msgInfo = '服务器内部错误' break case 501: msgInfo = '服务未实现' break case 502: msgInfo = '网关错误' break case 503: msgInfo = '服务不可用' break case 504: msgInfo = '网关超时' break case 505: msgInfo = 'HTTP版本不受支持' break } ElMessage.error(msgInfo) if (error.response.status == 401) { // localStorage.removeItem('eleToken') // 页面跳转 login router.push({ name: 'Login' }); } } else if (error.message == 'Network Error') { ElMessage.error('错误:网络错误') } else { ElMessage.error(`服务器内部错误`) } return Promise.reject(error) } export default service