Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to prevent Axios from encoding my request parameters?

I'm trying to pass in an API key through the URL parameters in my GET request.

However, I notice that Axios encodes the characters in my API key when sending the request. This causes the API to reject my request as it couldn't recognise my key.

How can I prevent Axios from encoding my GET parameters?

like image 211
Carven Avatar asked Aug 24 '16 07:08

Carven


People also ask

What is the difference between encodeURI and encodeURIComponent?

The difference between encodeURI and encodeURIComponent is encodeURIComponent encodes the entire string, where encodeURI ignores protocol prefix ('http://') and domain name. encodeURIComponent is designed to encode everything, where encodeURI ignores a URL's domain related roots.


1 Answers

You can use a custom param serializer as follows:

axios.get('https://foobar.com/api', {   paramsSerializer: function(params) {     var result = '';     // Build the query string      return result;   } }); 

paramsSerializer can be set at the instance level:

var instance = axios.create({ paramsSerializer: function(params) { /* ... */ } }) 

or at the global level:

axios.defaults.paramsSerializer = function(params) { /* ... */ }; 

Another option is to directly add the api key to the URL:

axios.get('https://foobar.com/api?api_key=' + key); 

You can add additional parameters using the `params' config option:

axios.get('https://foobar.com/api?api_key=' + key, {   params: {     foo: 'bar'   } }); 
like image 111
Nick Uraltsev Avatar answered Sep 23 '22 00:09

Nick Uraltsev