30

我正在尝试通过我的 GET 请求中的 URL 参数传入 API 密钥。

但是,我注意到 Axios 在发送请求时会对我的 API 密钥中的字符进行编码。这会导致 API 拒绝我的请求,因为它无法识别我的密钥。

如何防止 Axios 对我的 GET 参数进行编码?

4

2 回答 2

25

您可以使用自定义参数序列化程序,如下所示:

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'
  }
});
于 2016-08-25T18:28:06.953 回答
0

如果您使用的是qs库(或类似的编码库),您也可以这样做

import qs from 'qs';

axios.get('https://foobar.com/api', {
    params,
    paramsSerializer: (params) => qs.stringify(params, { encode: false }),
});
于 2022-02-10T10:14:10.363 回答