Как запретить Axios кодировать параметры моего запроса?

Я пытаюсь передать ключ API через параметры URL в моем запросе GET.

Однако я замечаю, что Axios кодирует символы в моем API-интерфейсе при отправке запроса. Это заставляет API отклонять мой запрос, поскольку он не может распознать мой ключ.

Как я могу запретить Axios кодировать мои параметры GET?

Ответ 1

Вы можете использовать специальный сериализатор параметров следующим образом:

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

paramsSerializer может быть установлен на уровне экземпляра:

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

или на глобальном уровне:

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

Другим вариантом является непосредственное добавление ключа api в URL-адрес:

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

Вы можете добавить дополнительные параметры, используя опцию конфигурации "params":

axios.get('https://foobar.com/api?api_key=' + key, {
  params: {
    foo: 'bar'
  }
});

Ответ 2

18.0, и я попробовал все вышеперечисленные способы, чтобы запретить axios кодировать параметры строки запроса, но он все еще кодирует.

Doing axios.get('https://foobar.com/api?api_key="yo"'); по-прежнему приводит к https://foobar.com/api?api_key=%22yo%22