若依封装的request.js
import axios from 'axios' import { Notification, MessageBox, Message } from 'element-ui' import store from '@/store' import { getToken } from '@/utils/auth' import errorCode from '@/utils/errorCode' import { tokenName } from '@/settings' import { encrypt } from '@/utils/jsencrypt' import { generatekey, aesEncrypt } from '@/utils/aes' import { Loading } 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: 10000 }); // 等待框实例 let requestLoading = undefined; // request拦截器 service.interceptors.request.use(config => { // 扩展参数 let extCfg = config.extCfg || {}; // 是否需要设置 token const isToken = (config.headers || {}).isToken === false; if (getToken() && !isToken) { config.headers[tokenName] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 } // 是否加密传输 if (extCfg && extCfg.security === true) { config.headers["security"] = "securityData"; const contentType = config.headers['Content-Type'] || "application/json;charset=UTF-8"; const aesKey = generatekey(16); let newData = { key: encrypt(aesKey), data: aesEncrypt(JSON.stringify(config.data), aesKey) } if (contentType.indexOf("/json") > 0 && config.method && config.method.toLocaleUpperCase !== "GET") { newData = JSON.stringify(newData); } config['data'] = newData; } // 不启动Loading框 if (extCfg && extCfg.noLoading !== true) { requestLoading = Loading.service({ fullscreen: true, text: '数据加载中......', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.7)' }); } return config }, error => { if (requestLoading) { requestLoading.close(); } console.log(error) Promise.reject(error) }); // 响应拦截器 service.interceptors.response.use(res => { if (requestLoading) { requestLoading.close(); } // 未设置状态码则默认成功状态 const code = res.data.code || 200; // 获取错误信息 const msg = res.data.msg || errorCode[code] || errorCode['default']; if (code === 401 || code === '401') { MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => { store.dispatch('LogOut').then(() => { location.reload(); }) }) } else if (code === 500 || code === '500') { Message({ message: msg, type: 'error' }) return Promise.reject(new Error(msg)) } else if (code !== 200 && code !== '200') { Notification.error({ title: msg }); return Promise.reject(new Error(msg)); } else { return res.data } }, error => { console.log('err' + error) if (requestLoading) { requestLoading.close(); } 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) } ); export default service