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

Invoke request transformers after request interceptors

closes #352
This commit is contained in:
Matt Zabriskie
2016-06-23 14:55:22 -06:00
parent f21784ccb8
commit e833a2f7e4
3 changed files with 43 additions and 39 deletions
-22
View File
@@ -4,7 +4,6 @@ var defaults = require('./../defaults');
var utils = require('./../utils');
var InterceptorManager = require('./InterceptorManager');
var dispatchRequest = require('./dispatchRequest');
var transformData = require('./transformData');
var isAbsoluteURL = require('./../helpers/isAbsoluteURL');
var combineURLs = require('./../helpers/combineURLs');
@@ -42,27 +41,6 @@ Axios.prototype.request = function request(config) {
config.url = combineURLs(config.baseURL, config.url);
}
// 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];
var promise = Promise.resolve(config);
+27
View File
@@ -1,5 +1,8 @@
'use strict';
var utils = require('./../utils');
var transformData = require('./transformData');
/**
* Dispatch a request to the server using whichever adapter
* is supported by the current environment.
@@ -8,6 +11,30 @@
* @returns {Promise} The Promise to be fulfilled
*/
module.exports = function dispatchRequest(config) {
// Ensure headers exist
config.headers = config.headers || {};
// 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];
}
);
return new Promise(function executor(resolve, reject) {
try {
var adapter;
+16 -17
View File
@@ -39,11 +39,6 @@ describe('interceptors', function () {
axios('/foo');
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200,
responseText: 'OK'
});
expect(request.method).toBe('POST');
expect(request.url).toBe('/bar');
done();
@@ -64,11 +59,6 @@ describe('interceptors', function () {
axios('/foo');
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200,
responseText: 'OK'
});
expect(request.requestHeaders.async).toBe('promise');
done();
});
@@ -91,13 +81,6 @@ describe('interceptors', function () {
axios('/foo');
getAjaxRequest().then(function (request) {
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith({
status: 200,
responseText: 'OK'
});
expect(request.requestHeaders.test1).toBe('1');
expect(request.requestHeaders.test2).toBe('2');
expect(request.requestHeaders.test3).toBe('3');
@@ -253,4 +236,20 @@ describe('interceptors', function () {
});
});
});
it('should execute interceptors before transformers', function (done) {
axios.interceptors.request.use(function (config) {
config.data.baz = 'qux';
return config;
});
axios.post('/foo', {
foo: 'bar'
});
getAjaxRequest().then(function (request) {
expect(request.params).toEqual('{"foo":"bar","baz":"qux"}');
done();
});
});
});