2
0
mirror of https://github.com/tenrok/axios.git synced 2026-06-11 18:02:32 +03:00

Merge pull request #121 from azendoo/custom-encode-params-method

Add support third-party library to serialize url params
This commit is contained in:
Matt Zabriskie
2015-10-27 14:48:02 -06:00
7 changed files with 52 additions and 27 deletions
+1 -1
View File
@@ -29,7 +29,7 @@ module.exports = function xhrAdapter(resolve, reject, config) {
// Create the request
var request = new (XMLHttpRequest || ActiveXObject)('Microsoft.XMLHTTP');
request.open(config.method.toUpperCase(), buildUrl(config.url, config.params), true);
request.open(config.method.toUpperCase(), buildUrl(config.url, config.params, config.paramsSerializer), true);
// Set the request timeout in MS
request.timeout = config.timeout;
+32 -24
View File
@@ -20,39 +20,47 @@ function encode(val) {
* @param {object} [params] The params to be appended
* @returns {string} The formatted url
*/
module.exports = function buildUrl(url, params) {
module.exports = function buildUrl(url, params, paramsSerializer) {
if (!params) {
return url;
}
var parts = [];
var serializedParams;
if (paramsSerializer) {
serializedParams = paramsSerializer(params);
}
else {
var parts = [];
utils.forEach(params, function (val, key) {
if (val === null || typeof val === 'undefined') {
return;
}
if (utils.isArray(val)) {
key = key + '[]';
}
if (!utils.isArray(val)) {
val = [val];
}
utils.forEach(val, function (v) {
if (utils.isDate(v)) {
v = v.toISOString();
utils.forEach(params, function (val, key) {
if (val === null || typeof val === 'undefined') {
return;
}
else if (utils.isObject(v)) {
v = JSON.stringify(v);
if (utils.isArray(val)) {
key = key + '[]';
}
parts.push(encode(key) + '=' + encode(v));
if (!utils.isArray(val)) {
val = [val];
}
utils.forEach(val, function (v) {
if (utils.isDate(v)) {
v = v.toISOString();
}
else if (utils.isObject(v)) {
v = JSON.stringify(v);
}
parts.push(encode(key) + '=' + encode(v));
});
});
});
if (parts.length > 0) {
url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&');
serializedParams = parts.join('&');
}
if (serializedParams) {
url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
}
return url;