我正在尝试通过我的 GET 请求中的 URL 参数传入 API 密钥。
但是,我注意到 Axios 在发送请求时会对我的 API 密钥中的字符进行编码。这会导致 API 拒绝我的请求,因为它无法识别我的密钥。
如何防止 Axios 对我的 GET 参数进行编码?
我正在尝试通过我的 GET 请求中的 URL 参数传入 API 密钥。
但是,我注意到 Axios 在发送请求时会对我的 API 密钥中的字符进行编码。这会导致 API 拒绝我的请求,因为它无法识别我的密钥。
如何防止 Axios 对我的 GET 参数进行编码?
您可以使用自定义参数序列化程序,如下所示:
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'
}
});
如果您使用的是qs库(或类似的编码库),您也可以这样做
import qs from 'qs';
axios.get('https://foobar.com/api', {
params,
paramsSerializer: (params) => qs.stringify(params, { encode: false }),
});