mirror of
https://github.com/tenrok/axios.git
synced 2026-06-23 20:40:40 +03:00
Move transform response logic from adapters to dispatcher
This commit is contained in:
@@ -6,7 +6,6 @@ The modules under `adapters/` are modules that handle dispatching a request and
|
|||||||
|
|
||||||
```js
|
```js
|
||||||
var settle = require('./../core/settle');
|
var settle = require('./../core/settle');
|
||||||
var transformData = require('./../core/transformData');
|
|
||||||
|
|
||||||
module.exports myAdapter(resolve, reject, config) {
|
module.exports myAdapter(resolve, reject, config) {
|
||||||
// At this point:
|
// At this point:
|
||||||
@@ -14,15 +13,11 @@ module.exports myAdapter(resolve, reject, config) {
|
|||||||
// - request transformers have already run
|
// - request transformers have already run
|
||||||
// - request interceptors have already run
|
// - request interceptors have already run
|
||||||
|
|
||||||
// Make the request using config provided/
|
// Make the request using config provided
|
||||||
// Upon response settle the Promise
|
// Upon response settle the Promise
|
||||||
|
|
||||||
var response = {
|
var response = {
|
||||||
data: transformData(
|
data: responseData,
|
||||||
responseData,
|
|
||||||
responseHeaders,
|
|
||||||
config.transformResponse
|
|
||||||
),
|
|
||||||
status: request.status,
|
status: request.status,
|
||||||
statusText: request.statusText,
|
statusText: request.statusText,
|
||||||
headers: responseHeaders,
|
headers: responseHeaders,
|
||||||
@@ -33,6 +28,7 @@ module.exports myAdapter(resolve, reject, config) {
|
|||||||
settle(resolve, reject, response);
|
settle(resolve, reject, response);
|
||||||
|
|
||||||
// From here:
|
// From here:
|
||||||
|
// - response transformers will run
|
||||||
// - response interceptors will run
|
// - response interceptors will run
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
var utils = require('./../utils');
|
var utils = require('./../utils');
|
||||||
var settle = require('./../core/settle');
|
var settle = require('./../core/settle');
|
||||||
var transformData = require('./../core/transformData');
|
|
||||||
var buildURL = require('./../helpers/buildURL');
|
var buildURL = require('./../helpers/buildURL');
|
||||||
var http = require('http');
|
var http = require('http');
|
||||||
var https = require('https');
|
var https = require('https');
|
||||||
@@ -117,6 +116,7 @@ module.exports = function httpAdapter(resolve, reject, config) {
|
|||||||
config: config,
|
config: config,
|
||||||
request: req
|
request: req
|
||||||
};
|
};
|
||||||
|
|
||||||
if (config.responseType === 'stream') {
|
if (config.responseType === 'stream') {
|
||||||
response.data = stream;
|
response.data = stream;
|
||||||
settle(resolve, reject, response);
|
settle(resolve, reject, response);
|
||||||
@@ -141,7 +141,8 @@ module.exports = function httpAdapter(resolve, reject, config) {
|
|||||||
if (config.responseType !== 'arraybuffer') {
|
if (config.responseType !== 'arraybuffer') {
|
||||||
responseData = responseData.toString('utf8');
|
responseData = responseData.toString('utf8');
|
||||||
}
|
}
|
||||||
response.data = transformData(responseData, res.headers, config.transformResponse);
|
|
||||||
|
response.data = responseData;
|
||||||
settle(resolve, reject, response);
|
settle(resolve, reject, response);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-7
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
var utils = require('./../utils');
|
var utils = require('./../utils');
|
||||||
var settle = require('./../core/settle');
|
var settle = require('./../core/settle');
|
||||||
var transformData = require('./../core/transformData');
|
|
||||||
var buildURL = require('./../helpers/buildURL');
|
var buildURL = require('./../helpers/buildURL');
|
||||||
var parseHeaders = require('./../helpers/parseHeaders');
|
var parseHeaders = require('./../helpers/parseHeaders');
|
||||||
var isURLSameOrigin = require('./../helpers/isURLSameOrigin');
|
var isURLSameOrigin = require('./../helpers/isURLSameOrigin');
|
||||||
@@ -24,7 +23,10 @@ module.exports = function xhrAdapter(resolve, reject, config) {
|
|||||||
// For IE 8/9 CORS support
|
// For IE 8/9 CORS support
|
||||||
// Only supports POST and GET calls and doesn't returns the response headers.
|
// Only supports POST and GET calls and doesn't returns the response headers.
|
||||||
// DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.
|
// DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.
|
||||||
if (process.env.NODE_ENV !== 'test' && typeof window !== 'undefined' && window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {
|
if (process.env.NODE_ENV !== 'test' &&
|
||||||
|
typeof window !== 'undefined' &&
|
||||||
|
window.XDomainRequest && !('withCredentials' in request) &&
|
||||||
|
!isURLSameOrigin(config.url)) {
|
||||||
request = new window.XDomainRequest();
|
request = new window.XDomainRequest();
|
||||||
loadEvent = 'onload';
|
loadEvent = 'onload';
|
||||||
xDomain = true;
|
xDomain = true;
|
||||||
@@ -60,11 +62,7 @@ module.exports = function xhrAdapter(resolve, reject, config) {
|
|||||||
var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;
|
var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;
|
||||||
var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;
|
var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;
|
||||||
var response = {
|
var response = {
|
||||||
data: transformData(
|
data: responseData,
|
||||||
responseData,
|
|
||||||
responseHeaders,
|
|
||||||
config.transformResponse
|
|
||||||
),
|
|
||||||
// IE sends 1223 instead of 204 (https://github.com/mzabriskie/axios/issues/201)
|
// IE sends 1223 instead of 204 (https://github.com/mzabriskie/axios/issues/201)
|
||||||
status: request.status === 1223 ? 204 : request.status,
|
status: request.status === 1223 ? 204 : request.status,
|
||||||
statusText: request.status === 1223 ? 'No Content' : request.statusText,
|
statusText: request.status === 1223 ? 'No Content' : request.statusText,
|
||||||
|
|||||||
@@ -56,6 +56,15 @@ module.exports = function dispatchRequest(config) {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
reject(e);
|
reject(e);
|
||||||
}
|
}
|
||||||
|
}).then(function onFulfilled(response) {
|
||||||
|
// Transform response data
|
||||||
|
response.data = transformData(
|
||||||
|
response.data,
|
||||||
|
response.headers,
|
||||||
|
config.transformResponse
|
||||||
|
);
|
||||||
|
|
||||||
|
return response;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user