import configs from '../configs'; import axios from 'axios' import { bus } from '../bus.js' // axios.defaults.withCredentials = true; // axios.defaults.headers.common['Authorization'] = AUTH_TOKEN; // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';//配置请求头 // 添加一个请求拦截器 // axios.interceptors.request.use(function (config) { // console.log(config); // return config; // }, function (error) { // // Do something with request error // return Promise.reject(error); // }); // 添加一个响应拦截器 axios.interceptors.response.use(function (response) { if (response.data && response.data.errcode) { if (parseInt(response.data.errcode) === 40001) { //未登录 bus.$emit('goto', '/login') } } return response; }, function (error) { // Do something with response error return Promise.reject(error); }); //基地址 let basePath = configs.baseURL; /** * @param path {string} path * @param opts {Object} options * @return {?Object} * * @description * Normalizes the given path, returning a regular expression * and the original path. * * Inspired by pathRexp in visionmedia/express/lib/utils.js. */ const pathReplace = function (path, opts) { const ret = { originalPath: path, patternPath: path } path = path .replace(/([().])/g, '\\$1') .replace(/(\/)?:(\w+)(\*\?|[?*])?/g, function (_, slash, key, option) { const optional = (option === '?' || option === '*?') ? '?' : null; const star = (option === '*' || option === '*?') ? '*' : null; slash = slash || ''; opts[key] = typeof opts[key] === 'number' ? opts[key].toString() : opts[key]; return '' + (optional ? '' : slash) + (opts[key] != '' ? opts[key] : '${' + key + '}') + (optional || ''); }) ret.patternPath = path; return ret; } // 处理http请求 const config = function (config, params) { //提取接口url路径 const url = basePath + pathReplace(config.url, params || {}).patternPath; return { // 发送请求 request: function (obj) { // 全部接口带token obj = obj || {} obj.params = obj.params || {} // obj.params.token = localStorage.getItem('user_key') //整合请求配置 let newConfig = Object.assign({}, obj || {}, config, { url: url, }); // console.log(newConfig) // newConfig.headers.Authorization=params.token //执行http接口请求 return axios(newConfig).then(successCallback, errorCallback); } } } // 请求成功回调 const successCallback = (result) => { // -402用户认证失败,请重新登录 -101没有操作权限 if (result.data.error_code === -402) { sessionStorage.clear() localStorage.removeItem('user_key') //未登录 bus.$emit('goto', '/login') } return result.data } // 请求失败回调 const errorCallback = (result) => { return result.data } export default { config: config }