From 2b8562694ec4322392cb0cf0d27fe69bd290fcb2 Mon Sep 17 00:00:00 2001 From: Haven Date: Sat, 12 Aug 2017 20:15:27 +0800 Subject: [PATCH] Fixing baseURL not working in interceptors (#950) * Fixing baseURL not working in interceptors * add test for modify base URL in request interceptor --- lib/core/Axios.js | 7 ------- lib/core/dispatchRequest.js | 7 +++++++ test/specs/interceptors.spec.js | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/lib/core/Axios.js b/lib/core/Axios.js index 57098533fd..f1af3e7bf6 100644 --- a/lib/core/Axios.js +++ b/lib/core/Axios.js @@ -4,8 +4,6 @@ var defaults = require('./../defaults'); var utils = require('./../utils'); var InterceptorManager = require('./InterceptorManager'); var dispatchRequest = require('./dispatchRequest'); -var isAbsoluteURL = require('./../helpers/isAbsoluteURL'); -var combineURLs = require('./../helpers/combineURLs'); /** * Create a new instance of Axios @@ -37,11 +35,6 @@ Axios.prototype.request = function request(config) { config = utils.merge(defaults, this.defaults, { method: 'get' }, config); config.method = config.method.toLowerCase(); - // Support baseURL config - if (config.baseURL && !isAbsoluteURL(config.url)) { - config.url = combineURLs(config.baseURL, config.url); - } - // Hook up interceptors middleware var chain = [dispatchRequest, undefined]; var promise = Promise.resolve(config); diff --git a/lib/core/dispatchRequest.js b/lib/core/dispatchRequest.js index b5111017d1..9ea70f2287 100644 --- a/lib/core/dispatchRequest.js +++ b/lib/core/dispatchRequest.js @@ -4,6 +4,8 @@ var utils = require('./../utils'); var transformData = require('./transformData'); var isCancel = require('../cancel/isCancel'); var defaults = require('../defaults'); +var isAbsoluteURL = require('./../helpers/isAbsoluteURL'); +var combineURLs = require('./../helpers/combineURLs'); /** * Throws a `Cancel` if cancellation has been requested. @@ -23,6 +25,11 @@ function throwIfCancellationRequested(config) { module.exports = function dispatchRequest(config) { throwIfCancellationRequested(config); + // Support baseURL config + if (config.baseURL && !isAbsoluteURL(config.url)) { + config.url = combineURLs(config.baseURL, config.url); + } + // Ensure headers exist config.headers = config.headers || {}; diff --git a/test/specs/interceptors.spec.js b/test/specs/interceptors.spec.js index 76dee5bbc5..effbcde258 100644 --- a/test/specs/interceptors.spec.js +++ b/test/specs/interceptors.spec.js @@ -252,4 +252,22 @@ describe('interceptors', function () { done(); }); }); + + it('should modify base URL in request interceptor', function (done) { + var instance = axios.create({ + baseURL: 'http://test.com/' + }); + + instance.interceptors.request.use(function (config) { + config.baseURL = 'http://rebase.com/'; + return config; + }); + + instance.get('/foo'); + + getAjaxRequest().then(function (request) { + expect(request.url).toBe('http://rebase.com/foo'); + done(); + }); + }); });