From 435636c714954b5903c57dae1d7f983dd4585d60 Mon Sep 17 00:00:00 2001 From: Nick Uraltsev Date: Sat, 21 Nov 2015 23:51:59 -0800 Subject: [PATCH] Add support for baseURL parameter --- axios.d.ts | 1 + lib/axios.js | 6 ++++++ test/specs/options.spec.js | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/axios.d.ts b/axios.d.ts index fb4aaabd4c..b8a3aad1d6 100644 --- a/axios.d.ts +++ b/axios.d.ts @@ -49,6 +49,7 @@ declare module axios { xsrfCookieName?: string; xsrfHeaderName?: string; paramsSerializer?: (params: any) => string; + baseURL?: string; } interface RequestOptions extends InstanceOptions { diff --git a/lib/axios.js b/lib/axios.js index 29a5060edf..e75ce67c03 100644 --- a/lib/axios.js +++ b/lib/axios.js @@ -4,6 +4,8 @@ var defaults = require('./defaults'); var utils = require('./utils'); var dispatchRequest = require('./core/dispatchRequest'); var InterceptorManager = require('./core/InterceptorManager'); +var isAbsoluteURL = require('./helpers/isAbsoluteURL'); +var combineURLs = require('./helpers/combineURLs'); function Axios (defaultConfig) { this.defaultConfig = utils.merge({ @@ -29,6 +31,10 @@ Axios.prototype.request = function (config) { config = utils.merge(this.defaultConfig, { method: 'get' }, config); + if (config.baseURL && !isAbsoluteURL(config.url)) { + config.url = combineURLs(config.baseURL, config.url); + } + // Don't allow overriding defaults.withCredentials config.withCredentials = config.withCredentials || defaults.withCredentials; diff --git a/test/specs/options.spec.js b/test/specs/options.spec.js index a91066293f..312fd3770b 100644 --- a/test/specs/options.spec.js +++ b/test/specs/options.spec.js @@ -78,4 +78,42 @@ describe('options', function () { done(); }, 0); }); + + it('should accept base URL', function (done) { + var request; + + const instance = axios.create({ + baseURL: 'http://test.com/' + }); + + instance.request({ + url: '/foo' + }); + + setTimeout(function () { + request = jasmine.Ajax.requests.mostRecent(); + + expect(request.url).toBe('http://test.com/foo'); + done(); + }, 0); + }); + + it('should ignore base URL if request URL is absolute', function (done) { + var request; + + const instance = axios.create({ + baseURL: 'http://someurl.com/' + }); + + instance.request({ + url: 'http://someotherurl.com/' + }); + + setTimeout(function () { + request = jasmine.Ajax.requests.mostRecent(); + + expect(request.url).toBe('http://someotherurl.com/'); + done(); + }, 0); + }); });