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) { /* ... */ };
もう 1 つのオプションは、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 }),
});