mirror of
https://github.com/tenrok/axios.git
synced 2026-06-20 20:00:40 +03:00
Adding HTTP status code for transformResponse (#4580)
* Adding HTTP status code for transformResponse * refs #1214 * Fix wrong argument for tranformResponse * Fix test wrong argument for tranformData * Add test case for transformData * Add test case for transformData (reference headers case) Co-authored-by: Jay <jasonsaayman@gmail.com>
This commit is contained in:
Vendored
+1
-1
@@ -10,7 +10,7 @@ export interface AxiosRequestTransformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface AxiosResponseTransformer {
|
export interface AxiosResponseTransformer {
|
||||||
(data: any, headers?: AxiosResponseHeaders): any;
|
(data: any, headers?: AxiosResponseHeaders, status?: number): any;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface AxiosAdapter {
|
export interface AxiosAdapter {
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ module.exports = function dispatchRequest(config) {
|
|||||||
config,
|
config,
|
||||||
config.data,
|
config.data,
|
||||||
config.headers,
|
config.headers,
|
||||||
|
null,
|
||||||
config.transformRequest
|
config.transformRequest
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -63,6 +64,7 @@ module.exports = function dispatchRequest(config) {
|
|||||||
config,
|
config,
|
||||||
response.data,
|
response.data,
|
||||||
response.headers,
|
response.headers,
|
||||||
|
response.status,
|
||||||
config.transformResponse
|
config.transformResponse
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -77,6 +79,7 @@ module.exports = function dispatchRequest(config) {
|
|||||||
config,
|
config,
|
||||||
reason.response.data,
|
reason.response.data,
|
||||||
reason.response.headers,
|
reason.response.headers,
|
||||||
|
reason.response.status,
|
||||||
config.transformResponse
|
config.transformResponse
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,14 +8,15 @@ var defaults = require('../defaults');
|
|||||||
*
|
*
|
||||||
* @param {Object|String} data The data to be transformed
|
* @param {Object|String} data The data to be transformed
|
||||||
* @param {Array} headers The headers for the request or response
|
* @param {Array} headers The headers for the request or response
|
||||||
|
* @param {Number} status HTTP status code
|
||||||
* @param {Array|Function} fns A single function or Array of functions
|
* @param {Array|Function} fns A single function or Array of functions
|
||||||
* @returns {*} The resulting transformed data
|
* @returns {*} The resulting transformed data
|
||||||
*/
|
*/
|
||||||
module.exports = function transformData(data, headers, fns) {
|
module.exports = function transformData(data, headers, status, fns) {
|
||||||
var context = this || defaults;
|
var context = this || defaults;
|
||||||
/*eslint no-param-reassign:0*/
|
/*eslint no-param-reassign:0*/
|
||||||
utils.forEach(fns, function transform(fn) {
|
utils.forEach(fns, function transform(fn) {
|
||||||
data = fn.call(context, data, headers);
|
data = fn.call(context, data, headers, status);
|
||||||
});
|
});
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ var transformData = require('../../../lib/core/transformData');
|
|||||||
describe('core::transformData', function () {
|
describe('core::transformData', function () {
|
||||||
it('should support a single transformer', function () {
|
it('should support a single transformer', function () {
|
||||||
var data;
|
var data;
|
||||||
data = transformData(data, null, function (data) {
|
data = transformData(data, null, null, function (data) {
|
||||||
data = 'foo';
|
data = 'foo';
|
||||||
return data;
|
return data;
|
||||||
});
|
});
|
||||||
@@ -13,7 +13,7 @@ describe('core::transformData', function () {
|
|||||||
|
|
||||||
it('should support an array of transformers', function () {
|
it('should support an array of transformers', function () {
|
||||||
var data = '';
|
var data = '';
|
||||||
data = transformData(data, null, [function (data) {
|
data = transformData(data, null, null, [function (data) {
|
||||||
data += 'f';
|
data += 'f';
|
||||||
return data;
|
return data;
|
||||||
}, function (data) {
|
}, function (data) {
|
||||||
@@ -26,5 +26,28 @@ describe('core::transformData', function () {
|
|||||||
|
|
||||||
expect(data).toEqual('foo');
|
expect(data).toEqual('foo');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should support reference headers in transformData', function () {
|
||||||
|
var headers = {
|
||||||
|
'content-type': 'foo/bar',
|
||||||
|
};
|
||||||
|
var data = '';
|
||||||
|
data = transformData(data, headers, null, [function (data, headers) {
|
||||||
|
data += headers['content-type'];
|
||||||
|
return data;
|
||||||
|
}]);
|
||||||
|
|
||||||
|
expect(data).toEqual('foo/bar');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should support reference status code in transformData', function () {
|
||||||
|
var data = '';
|
||||||
|
data = transformData(data, null, 200, [function (data, headers, status) {
|
||||||
|
data += status;
|
||||||
|
return data;
|
||||||
|
}]);
|
||||||
|
|
||||||
|
expect(data).toEqual('200');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -6,24 +6,24 @@ describe('transformResponse', function () {
|
|||||||
describe('200 request', function () {
|
describe('200 request', function () {
|
||||||
it('parses json', function () {
|
it('parses json', function () {
|
||||||
var data = '{"message": "hello, world"}';
|
var data = '{"message": "hello, world"}';
|
||||||
var result = transformData(data, {'content-type': 'application/json'}, defaults.transformResponse);
|
var result = transformData(data, {'content-type': 'application/json'}, 200, defaults.transformResponse);
|
||||||
assert.strictEqual(result.message, 'hello, world');
|
assert.strictEqual(result.message, 'hello, world');
|
||||||
});
|
});
|
||||||
it('ignores XML', function () {
|
it('ignores XML', function () {
|
||||||
var data = '<message>hello, world</message>';
|
var data = '<message>hello, world</message>';
|
||||||
var result = transformData(data, {'content-type': 'text/xml'}, defaults.transformResponse);
|
var result = transformData(data, {'content-type': 'text/xml'}, 200, defaults.transformResponse);
|
||||||
assert.strictEqual(result, data);
|
assert.strictEqual(result, data);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
describe('204 request', function () {
|
describe('204 request', function () {
|
||||||
it('does not parse the empty string', function () {
|
it('does not parse the empty string', function () {
|
||||||
var data = '';
|
var data = '';
|
||||||
var result = transformData(data, {'content-type': undefined}, defaults.transformResponse);
|
var result = transformData(data, {'content-type': undefined}, 204, defaults.transformResponse);
|
||||||
assert.strictEqual(result, '');
|
assert.strictEqual(result, '');
|
||||||
});
|
});
|
||||||
it('does not parse undefined', function () {
|
it('does not parse undefined', function () {
|
||||||
var data = undefined;
|
var data = undefined;
|
||||||
var result = transformData(data, {'content-type': undefined}, defaults.transformResponse);
|
var result = transformData(data, {'content-type': undefined}, 200, defaults.transformResponse);
|
||||||
assert.strictEqual(result, data);
|
assert.strictEqual(result, data);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user