fix: compatible with axios data and params

This commit is contained in:
DIYgod
2019-06-04 15:10:27 +08:00
parent 3efdb57be0
commit 907d7498ca

View File

@@ -3,6 +3,7 @@ const config = require('@/config');
const SocksProxyAgent = require('socks-proxy-agent');
const tunnel = require('tunnel');
const got = require('got');
const queryString = require('query-string');
let agent = null;
if (config.proxy && config.proxy.protocol && config.proxy.host && config.proxy.port) {
@@ -74,12 +75,24 @@ const custom = got.extend({
return error;
},
],
beforeRequest: [
init: [
(options) => {
options.body = options.data;
// compatible with axios api
if (options.data) {
if (typeof options.data === 'object') {
options.json = options.json || options.data;
} else {
options.body = options.body || options.data;
}
}
if (options.responseType === 'buffer') {
options.encoding = null;
}
if (options.params) {
options.query = options.query || queryString.stringify(options.params);
options.searchParams = options.query; // for Got v11 after
}
if (agent && new RegExp(config.proxy.url_regex).test(options.href)) {
options.agent = agent[options.protocol.slice(0, -1)];