import qs from 'qs'; import axios from 'axios'; import { getLocalKey, removeLocalKey, encryptionKey } from '@/lib/storageUtil';// utlis 常用公共方法封装
import store from '@/store/index' // 用到了vuex 公共数据存储 axios.defaults.timeout = 5000; //请求超时5秒 axios.defaults.baseURL = ''; //请求base url axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; //设置post请求是的header信息 //http request 拦截器 axios.interceptors.request.use( config => { return config }, err => { return Promise.reject(err) } ); axios.interceptors.response.use( response => { if (response.data.code === 4003) { alert('您没有权限操作!') return false; } if (response.data.code === -1000) { removeLocalKey('userInfos') alert('登录已过期,请重新登录!') window.location.href = 'home' } return response }, err => { if (err.code === 'ECONNABORTED' && err.message.indexOf('timeout') !== -1) { console.log(err) alert('网络异常,连接超时...'); } return Promise.reject(err) } ); /** * 封装get方法 * @param url * @param data * @returns {Promise} */ export function get (url, params = {}, callback, headers = {}) { if (typeof callback !== 'function') { alert('当前callback 类型不正确' + url) } const historyList = store.state.storageHistory; const apiName = encryptionKey(url + JSON.stringify(params)); const index = historyList.map(item => item.id).indexOf(apiName); if (index > -1) { const res = historyList[index]; return callback(res) } return new Promise((resolve, reject) => { axios.get(url, { params: params, headers: headers }) .then(response => { callback(response.data) let resData = response.data; if (isCurApi) { resData = JSON.parse(response.data) } resData.id = apiName; store.dispatch('setChangeStorageHistory', resData) resolve(response.data); }) .catch(err => { reject(err) }) }) }; /** * 封装post请求 * @param url * @param data * @returns {Promise} */ export function post (url, data = {}, callback) { const historyList = store.state.storageHistory; if (typeof callback !== 'function') { alert('当前callback 类型不正确' + url) } return new Promise((resolve, reject) => { let datas = data; if (Object.prototype.toString.call(datas) == '[object FormData]') { datas = data; } else { datas = qs.stringify(data) } axios.post(url, datas) .then(response => { callback(response.data); resolve(response.data); }, err => { reject(err) }) }) }