GET Request Query Params with Axios

Jul 25, 2020

The easiest way to make a GET request with Axios is the axios.get() function. The 2nd parameter to axios.get() is the Axios options: Axios will serialize options.params and add it to the query string for you as shown below.

const axios = require('axios');

// Equivalent to `axios.get('https://httpbin.org/get?answer=42')`
const res = await axios.get('https://httpbin.org/get', { params: { answer: 42 } });

res.data.args; // { answer: 42 }

You can set options.params to a POJO as shown above, or to an instance of the JavaScript's built-in URLSearchParams class.

const params = new URLSearchParams([['answer', 42]]);

const res = await axios.get('https://httpbin.org/get', { params });
res.data.args; // { answer: 42 }

Customizing Serialization

Axios's built-in query string serializer respects the toJSON() function, so it automatically serializes built-in custom JSON serialization, like Moment objects or Mongoose documents.

const moment = require('moment');

const params = {
  answer: { toJSON: () => 42 },
  time: moment('2016-06-01')
};

const res = await axios.get('https://httpbin.org/get', { params });
res.data.args; // { answer: 42, time: "\"2016-06-01T04:00:00.000Z\"" }

However, if you need more flexibility in how Axios serializes query strings, Axios supports a paramsSerializer option that lets you overwrite the function Axios to serialize.

const params = { answer: 42 };

const res = await axios.get('https://httpbin.org/get', {
  params,
  paramsSerializer: function paramsSerializer(params) {
    // "Hide" the `answer` param
    return Object.entries(Object.assign({}, params,  { answer: 'HIDDEN' })).
      map(([key, value]) => `${key}=${value}`).
      join('&');
  }
});
res.data.args; // { answer: 'HIDDEN' }

More Axios Tutorials