castle-haozijunqaq-utils
Version:
Common development utils
205 lines (172 loc) • 5.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _axios = require('axios');
var _axios2 = _interopRequireDefault(_axios);
var _qs = require('qs');
var _qs2 = _interopRequireDefault(_qs);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var headerExceptRequestURLs = [];
var headerOptions = [];
var handleGlobalServerCode = function handleGlobalServerCode(error) {};
var service = _axios2.default.create();
service.defaults.withCredentials = true;
service.interceptors.request.use(function (config) {
var hasUrl = headerExceptRequestURLs.some(function (url) {
return url === config.url;
});
if (!hasUrl) {
headerOptions.forEach(function (header) {
config.headers[header[0]] = header[1];
});
}
return config;
}, function (error) {
Promise.reject(error);
});
service.interceptors.response.use(function (response) {
handleGlobalServerCode(response);
return response;
}, function (error) {
//响应错误处理
handleGlobalServerCode(error.response);
return error.response;
});
['getData', 'deleteData', 'headData'].forEach(function (item) {
service[item] = function (url, par) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var queryParams = {
params: {
_t: new Date().getTime()
}
};
if (par) {
var params = Object.assign(queryParams.params, par);
queryParams = {
params: params
};
}
queryParams = Object.assign(queryParams, options);
return new Promise(function (resolve, reject) {
service[item.replace(/Data/g, '')](url, queryParams).then(function (res) {
resolve(res);
}).catch(function (error) {
reject(error);
});
});
};
});
['postData', 'putData'].forEach(function (item) {
service[item] = function (url, params) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
return new Promise(function (resolve, reject) {
service[item.replace(/Data/g, '')](url, _qs2.default.stringify(params), options).then(function (res) {
resolve(res);
}).catch(function (error) {
reject(error);
});
});
};
});
['postJSON', 'putJSON', 'deleteJSON'].forEach(function (item) {
service[item] = function (url, params) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
return new Promise(function (resolve, reject) {
service[item.replace(/JSON/g, '')](url, params, options).then(function (res) {
resolve(res);
}).catch(function (error) {
reject(error);
});
});
};
});
service.getBlob = function (url, par) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var queryParams = {
params: {
_t: new Date().getTime()
}
};
var config = {
responseType: 'blob'
};
if (par) {
var params = Object.assign(queryParams.params, par);
queryParams = {
params: params
};
}
queryParams = Object.assign(queryParams, config, options);
return new Promise(function (resolve, reject) {
service.get(url, queryParams).then(function (res) {
resolve(res);
}).catch(function (error) {
reject(error);
});
});
};
service.postJSON = function (url, params) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
return new Promise(function (resolve, reject) {
service.post(url, params, options).then(function (res) {
resolve(res);
}).catch(function (error) {
reject(error);
});
});
};
service.postMultipart = function (url, params) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var formdata = null;
var config = {
headers: {
'Content-Type': 'multipart/form-data'
}
};
if (params) {
formdata = new FormData();
Object.keys(params).forEach(function (key) {
formdata.append(key, params[key]);
});
}
options = Object.assign(config, options);
return new Promise(function (resolve, reject) {
service.post(url, formdata, options).then(function (res) {
resolve(res);
}).catch(function (error) {
reject(error);
});
});
};
service.setBaseUrl = function (baseURL) {
service.defaults.baseURL = baseURL;
};
service.setTimeout = function (time) {
service.defaults.timeout = time;
};
service.addHeader = function () {
var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
headerOptions.push([key, value]);
};
service.removeHeader = function () {
var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var index = headerOptions.findIndex(function (option) {
return option[0] === key;
});
if (index >= 0) {
headerOptions.splice(index, 1);
}
};
service.setHeadersExcept = function () {
var URLs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
headerExceptRequestURLs = URLs;
};
service.changeIsWithCredentials = function (isWithCredentials) {
service.defaults.withCredentials = isWithCredentials;
};
service.setResultCodeHandler = function (fn) {
handleGlobalServerCode = fn;
};
exports.default = service;