概要
自分が結構詰まったのでメモです。
querystringを使う方法(Nodeのバージョンを問わない)
const querystring = require('querystring');
axios.post('http://something.com/', querystring.stringify({ foo: 'bar' }));
こちらの方法がバージョンを問わず公式ドキュメントでも使われているのでおすすめです。
自作のライブラリでquerystringを使った実装があるので参考にどうぞ。
https://github.com/SugarShootingStar/nomlish/blob/master/src/main.js
URLSearchParams()を使う方法(Nodeのバージョンが10以上)
const params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params);
公式ドキュメントには記述されていませんが、nodeのバージョンが10以上の場合、URLSearchParams()がそのまま使えるようになっているのでquerystringをrequireしなくても動かすことができます。
しかし、自作ライブラリ等で複数バージョンに対応したい場合は上記のquerystringを使った方法のほうが無難です。
また、Node8にも一応URLSearchParams()は用意されているのですがこちらを使う場合はこうなります。
しかし私がこの方法を試した所上手く動きませんでした。サイトとの兼ね合いかもしれませんが…
const { URLSearchParams } = require('url');
const params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params);