<p dir="auto"><strong>Describe the bug</strong><br>
After upgrading from v0.18.1 to v0.19.2 axios stopped respecting GET params that are set as <code class="notranslate">defaults.params</code> or <code class="notranslate">params</code> passed while creating an instance.</p>
<p dir="auto"><strong>To Reproduce</strong></p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="

const newAxios = axios.create({
  baseURL: 'https://httpbin.org/get',
  params:{
    'a': 'b'
  }
});

// this request doesn't respect params set above
newAxios.get('');

// this request doesn't respect params either
newAxios.defaults.params = {'c': 'd'};
newAxios.get('');


// this is the only way to pass get params
newAxios.get('', {params: {'e': 'f'}})"><pre class="notranslate"><span class="pl-k">const</span> <span class="pl-s1">newAxios</span> <span class="pl-c1">=</span> <span class="pl-s1">axios</span><span class="pl-kos">.</span><span class="pl-en">create</span><span class="pl-kos">(</span><span class="pl-kos">{</span>
  <span class="pl-c1">baseURL</span>: <span class="pl-s">'https://httpbin.org/get'</span><span class="pl-kos">,</span>
  <span class="pl-c1">params</span>:<span class="pl-kos">{</span>
    <span class="pl-s">'a'</span>: <span class="pl-s">'b'</span>
  <span class="pl-kos">}</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

<span class="pl-c">// this request doesn't respect params set above</span>
<span class="pl-s1">newAxios</span><span class="pl-kos">.</span><span class="pl-en">get</span><span class="pl-kos">(</span><span class="pl-s">''</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

<span class="pl-c">// this request doesn't respect params either</span>
<span class="pl-s1">newAxios</span><span class="pl-kos">.</span><span class="pl-c1">defaults</span><span class="pl-kos">.</span><span class="pl-c1">params</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span><span class="pl-s">'c'</span>: <span class="pl-s">'d'</span><span class="pl-kos">}</span><span class="pl-kos">;</span>
<span class="pl-s1">newAxios</span><span class="pl-kos">.</span><span class="pl-en">get</span><span class="pl-kos">(</span><span class="pl-s">''</span><span class="pl-kos">)</span><span class="pl-kos">;</span>


<span class="pl-c">// this is the only way to pass get params</span>
<span class="pl-s1">newAxios</span><span class="pl-kos">.</span><span class="pl-en">get</span><span class="pl-kos">(</span><span class="pl-s">''</span><span class="pl-kos">,</span> <span class="pl-kos">{</span><span class="pl-c1">params</span>: <span class="pl-kos">{</span><span class="pl-s">'e'</span>: <span class="pl-s">'f'</span><span class="pl-kos">}</span><span class="pl-kos">}</span><span class="pl-kos">)</span></pre></div>
<p dir="auto">Live example here: <a href="https://jsfiddle.net/rmjuexz8/" rel="nofollow">https://jsfiddle.net/rmjuexz8/</a></p>
<p dir="auto"><strong>Expected behavior</strong><br>
All the requests from the example should have GET parameters.</p>
<p dir="auto"><strong>Environment:</strong></p>
<ul dir="auto">
<li>Axios Version: 0.19.2</li>
</ul>
<p dir="auto"><strong>Describe the bug</strong></p>
<p dir="auto">Specific request params do not get merged with the instance default params.</p>
<p dir="auto"><strong>To Reproduce</strong></p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="const instance = axios.create({
    baseURL: &quot;http://www.example.com&quot;,
    params: {
      q: &quot;question&quot;,
    }
  });"><pre class="notranslate"><span class="pl-k">const</span> <span class="pl-s1">instance</span> <span class="pl-c1">=</span> <span class="pl-s1">axios</span><span class="pl-kos">.</span><span class="pl-en">create</span><span class="pl-kos">(</span><span class="pl-kos">{</span>
    <span class="pl-c1">baseURL</span>: <span class="pl-s">"http://www.example.com"</span><span class="pl-kos">,</span>
    <span class="pl-c1">params</span>: <span class="pl-kos">{</span>
      <span class="pl-c1">q</span>: <span class="pl-s">"question"</span><span class="pl-kos">,</span>
    <span class="pl-kos">}</span>
  <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">;</span></pre></div>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="instance.get(&quot;/page&quot;, 
  { 
    params: { 
      page: 2 
    }
  }
)"><pre class="notranslate"><span class="pl-s1">instance</span><span class="pl-kos">.</span><span class="pl-en">get</span><span class="pl-kos">(</span><span class="pl-s">"/page"</span><span class="pl-kos">,</span> 
  <span class="pl-kos">{</span> 
    <span class="pl-c1">params</span>: <span class="pl-kos">{</span> 
      <span class="pl-c1">page</span>: <span class="pl-c1">2</span> 
    <span class="pl-kos">}</span>
  <span class="pl-kos">}</span>
<span class="pl-kos">)</span></pre></div>
<p dir="auto">What happens is that the request param object overrides the instance default param object. The instance no longer has a query param of <code class="notranslate">q</code>.</p>
<p dir="auto"><strong>Expected behavior</strong></p>
<p dir="auto">According to the docs, all configuration options are <em>merged</em>. <a href="https://github.com/axios/axios#instance-methods">https://github.com/axios/axios#instance-methods</a></p>
<p dir="auto">I expected request to contain both <code class="notranslate">q</code> and <code class="notranslate">page</code> params. This is also how it was working in version 0.18.0, which is how I noticed.</p>
<p dir="auto"><strong>Environment:</strong></p>
<ul dir="auto">
<li>Axios Version: 0.19.0</li>
<li>OS: 10.14.5 (18F132)</li>
<li>Browser: Node Express, and Chrome</li>
<li>Browser: Node 10.15.0, Chrome Version 74.0.3729.169 (Official Build) (64-bit)</li>
</ul>