2
0
mirror of https://github.com/tenrok/axios.git synced 2026-06-17 19:21:29 +03:00

Fixing config weirdness

This commit is contained in:
Matt Zabriskie
2015-12-24 11:44:46 -07:00
parent cdedbf0bb1
commit 82847f737e
6 changed files with 176 additions and 49 deletions
+2 -14
View File
@@ -1,6 +1,5 @@
'use strict';
var defaults = require('./../defaults');
var utils = require('./../utils');
var buildURL = require('./../helpers/buildURL');
var transformData = require('./../helpers/transformData');
@@ -12,19 +11,8 @@ var pkg = require('./../../package.json');
var Buffer = require('buffer').Buffer;
module.exports = function httpAdapter(resolve, reject, config) {
// Transform request data
var data = transformData(
config.data,
config.headers,
config.transformRequest
);
// Merge headers
var headers = utils.merge(
defaults.headers.common,
defaults.headers[config.method] || {},
config.headers || {}
);
var data = config.data;
var headers = config.headers;
// Set User-Agent (required by some servers)
// Only set header if it hasn't been set in config
+10 -22
View File
@@ -2,7 +2,6 @@
/*global ActiveXObject:true*/
var defaults = require('./../defaults');
var utils = require('./../utils');
var buildURL = require('./../helpers/buildURL');
var parseHeaders = require('./../helpers/parseHeaders');
@@ -12,21 +11,10 @@ var ieVersion = require('./../helpers/ieVersion');
var btoa = window.btoa || require('./../helpers/btoa');
module.exports = function xhrAdapter(resolve, reject, config) {
// Transform request data
var data = transformData(
config.data,
config.headers,
config.transformRequest
);
var requestData = config.data;
var requestHeaders = config.headers;
// Merge headers
var requestHeaders = utils.merge(
defaults.headers.common,
defaults.headers[config.method] || {},
config.headers || {}
);
if (utils.isFormData(data)) {
if (utils.isFormData(requestData)) {
delete requestHeaders['Content-Type']; // Let the browser set it
}
@@ -89,19 +77,19 @@ module.exports = function xhrAdapter(resolve, reject, config) {
var cookies = require('./../helpers/cookies');
// Add xsrf header
var xsrfValue = config.withCredentials || isURLSameOrigin(config.url) ?
cookies.read(config.xsrfCookieName || defaults.xsrfCookieName) :
var xsrfValue = config.withCredentials || isURLSameOrigin(config.url) ?
cookies.read(config.xsrfCookieName) :
undefined;
if (xsrfValue) {
requestHeaders[config.xsrfHeaderName || defaults.xsrfHeaderName] = xsrfValue;
requestHeaders[config.xsrfHeaderName] = xsrfValue;
}
}
// Add headers to the request
if (!xDomain) {
utils.forEach(requestHeaders, function setRequestHeader(val, key) {
if (!data && key.toLowerCase() === 'content-type') {
if (!requestData && key.toLowerCase() === 'content-type') {
// Remove Content-Type if data is undefined
delete requestHeaders[key];
} else {
@@ -127,10 +115,10 @@ module.exports = function xhrAdapter(resolve, reject, config) {
}
}
if (utils.isArrayBuffer(data)) {
data = new DataView(data);
if (utils.isArrayBuffer(requestData)) {
requestData = new DataView(requestData);
}
// Send the request
request.send(data);
request.send(requestData);
};
+28 -12
View File
@@ -7,15 +7,10 @@ var InterceptorManager = require('./core/InterceptorManager');
var isAbsoluteURL = require('./helpers/isAbsoluteURL');
var combineURLs = require('./helpers/combineURLs');
var bind = require('./helpers/bind');
var transformData = require('./helpers/transformData');
function Axios(defaultConfig) {
this.defaultConfig = utils.merge({
headers: {},
timeout: defaults.timeout,
transformRequest: defaults.transformRequest,
transformResponse: defaults.transformResponse
}, defaultConfig);
this.defaults = utils.merge({}, defaultConfig);
this.interceptors = {
request: new InterceptorManager(),
response: new InterceptorManager()
@@ -31,14 +26,36 @@ Axios.prototype.request = function request(config) {
}, arguments[1]);
}
config = utils.merge(this.defaultConfig, { method: 'get' }, config);
config = utils.merge(defaults, this.defaults, { method: 'get' }, config);
// Support baseURL config
if (config.baseURL && !isAbsoluteURL(config.url)) {
config.url = combineURLs(config.baseURL, config.url);
}
// Don't allow overriding defaults.withCredentials
config.withCredentials = config.withCredentials || defaults.withCredentials;
config.withCredentials = config.withCredentials || this.defaults.withCredentials;
// Transform request data
config.data = transformData(
config.data,
config.headers,
config.transformRequest
);
// Flatten headers
config.headers = utils.merge(
config.headers.common || {},
config.headers[config.method] || {},
config.headers || {}
);
utils.forEach(
['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
function cleanHeaderConfig(method) {
delete config.headers[method];
}
);
// Hook up interceptors middleware
var chain = [dispatchRequest, undefined];
@@ -59,8 +76,7 @@ Axios.prototype.request = function request(config) {
return promise;
};
var defaultInstance = new Axios();
var defaultInstance = new Axios(defaults);
var axios = module.exports = bind(Axios.prototype.request, defaultInstance);
axios.create = function create(defaultConfig) {
@@ -68,7 +84,7 @@ axios.create = function create(defaultConfig) {
};
// Expose defaults
axios.defaults = defaults;
axios.defaults = defaultInstance.defaults;
// Expose all/spread
axios.all = function all(promises) {
+5 -1
View File
@@ -212,7 +212,11 @@ function forEach(obj, fn) {
function merge(/* obj1, obj2, obj3, ... */) {
var result = {};
function assignValue(val, key) {
result[key] = val;
if (typeof result[key] === 'object' && typeof val === 'object') {
result[key] = merge(result[key], val);
} else {
result[key] = val;
}
}
for (var i = 0, l = arguments.length; i < l; i++) {