zcloud-ui
Version:
A Component Library for Vue.js.
142 lines (122 loc) • 4.77 kB
JavaScript
;
exports.__esModule = true;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /**
* axios basic configuration
*/
// 环境配置
var _axios = require('axios');
var _axios2 = _interopRequireDefault(_axios);
var _index = require('zcloud-ui/lib/config/index');
var _interceptor = require('./interceptor');
var _interceptor2 = _interopRequireDefault(_interceptor);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var instance = _axios2.default.create();
var TimeOut = 60000;
// 初始化拦截器
new _interceptor2.default({ TimeOut: TimeOut, axios: instance }); // eslint-disable-line no-new
// 配置
var configuration = ['ignoreRepeat', // 忽略防止重复请求
'verifycode', // 验证码
'timeOut', // 超时
'authCode', // 按钮权限
'AuthCode', // 按钮权限
'Authorization', // token
'ignoreError', // 忽略报错
'returnAll', // 返回带code的信息全部信息
'inside' // 组件库内部调用必须加
];
/**
* 基础配置
* 更多配置请参考 https://github.com/axios/axios
* @param {*} url 请求地址
* @param {*} data 参数
* @param {*} type 请求类型,默认post
*/
var Http = function Http(url) {
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'post';
var header = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
// // 手动加入api
// for (let key in data) {
// if (data[key] && data[key].constructor === Object) {
// data[key].api = url;
// }
// }
var CancelToken = _axios2.default.CancelToken;
var cancel = null,
timer = null;
if ((typeof type === 'undefined' ? 'undefined' : _typeof(type)) === 'object') {
header = type;
type = 'post';
}
var headers = _extends({
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': 'application/json',
'Authorization': _index.Environment.TOKEN || ''
}, header);
// 添加header token
var query = void 0;
// 处理配置
for (var _iterator = configuration, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var item = _ref;
if (data[item]) {
if (item === 'authCode') {
headers.AuthCode = data[item];
} else {
headers[item] = data[item];
}
delete data[item];
}
}
var apiNum = data.apiNum || 0;
var hostUrl = data.hostUrl || '';
delete data.hostUrl;
delete data.apiNum;
if (!url.includes('http')) {
if (_index.Environment.AUTH_MENU_ID) {
headers.AuthMenu = _index.Environment.AUTH_MENU_ID;
}
query = hostUrl + _index.Environment.URL_PREFIX_API[apiNum] + url;
} else {
query = url;
}
var config = {
url: query,
method: type,
timeout: headers.timeOut || TimeOut, // 超时时间
headers: headers,
responseType: 'json',
validateStatus: function validateStatus(status) {
return status >= 200 && status < 300; // 默认的
},
maxRedirects: 5,
cancelToken: new CancelToken(function executor(c) {
cancel = c;
}),
cancel: cancel,
timer: timer
};
if (type.toUpperCase() === 'POST') {
config.data = data;
} else if (type.toUpperCase() === 'GET') {
config.params = data;
}
var response = null;
try {
response = instance(config);
} catch (error) {
response = Promise.reject(error);
}
return response;
};
exports.default = Http;