提交 b9bb6ae7 编写于 作者: M Matt Zabriskie

Adding support for custom adapters

上级 be241d55
......@@ -167,14 +167,14 @@ These are the available config options for making requests. Only the `url` is re
// `url` is the server URL that will be used for the request
url: '/user',
// `method` is the request method to be used when making the request
method: 'get', // default
// `baseURL` will be prepended to `url` unless `url` is absolute.
// It can be convenient to set `baseURL` for an instance of axios to pass relative URLs
// to methods of that instance.
baseURL: 'https://some-domain.com/api/',
// `method` is the request method to be used when making the request
method: 'get', // default
// `transformRequest` allows changes to the request data before it is sent to the server
// This is only applicable for request methods 'PUT', 'POST', and 'PATCH'
// The last function in the array must return a string or an ArrayBuffer
......@@ -221,6 +221,12 @@ These are the available config options for making requests. Only the `url` is re
// should be made using credentials
withCredentials: false, // default
// `adapter` allows custom handling of requests which makes testing easier.
// Call `resolve` or `reject` and supply a valid response (see [response docs](#response-api)).
adapter: function (resolve, reject, config) {
/* ... */
},
// `auth` indicates that HTTP Basic auth should be used, and supplies credentials.
// This will set an `Authorization` header, overwriting any existing
// `Authorization` custom headers you have set using `headers`.
......
......@@ -10,12 +10,21 @@
module.exports = function dispatchRequest(config) {
return new Promise(function executor(resolve, reject) {
try {
if ((typeof XMLHttpRequest !== 'undefined') || (typeof ActiveXObject !== 'undefined')) {
var adapter;
if (typeof config.adapter === 'function') {
// For custom adapter support
adapter = config.adapter;
} else if (typeof XMLHttpRequest !== 'undefined') {
// For browsers use XHR adapter
require('../adapters/xhr')(resolve, reject, config);
adapter = require('../adapters/xhr');
} else if (typeof process !== 'undefined') {
// For node use HTTP adapter
require('../adapters/http')(resolve, reject, config);
adapter = require('../adapters/http');
}
if (typeof adapter === 'function') {
adapter(resolve, reject, config);
}
} catch (e) {
reject(e);
......
var axios = require('../../index');
describe('adapter', function () {
it('should support custom adapter', function (done) {
var called = false;
axios({
url: '/foo',
adapter: function (resolve, reject, config) {
called = true;
}
});
setTimeout(function () {
expect(called).toBe(true);
done();
}, 0);
});
});
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册