application/x-www-form-urlencoded
기본적으로 axios는 JavaScript 객체를 'JSON'으로 직렬화(serialize) 합니다. application/x-www-form-urlencoded 포멧 대신 데이터를 보내려면 다음 옵션 중 하나를 사용할 수 있습니다.
브라우저
브라우저에서 다음과 같이 URLSearchParams API를 사용할 수 있습니다.
const params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params);
1
2
3
4
2
3
4
NOTE
URLSearchParams는 모든 브라우저에서 지원되지는 않지만, 사용할 수 있는 polyfill이 있습니다.
또는 qs 라이브러리를 사용하여 데이터를 인코딩 할 수 있습니다.
const qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 }));
1
2
2
ES6+ 사용하는 경우는 아래와 같이 작성할 수 있습니다.
import qs from 'qs';
const data = { 'bar': 123 };
const options = {
method: 'POST',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
data: qs.stringify(data),
url,
};
axios(options);
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Node.js
다음과 같이 querystring 모듈을 사용할 수 있습니다.
const querystring = require('querystring');
axios.post('http://something.com/', querystring.stringify({ foo: 'bar' }));
1
2
2
물론 qs 라이브러리를 사용할 수도 있습니다.
const qs = require('qs');
axios.post('http://something.com/', qs.stringify({ foo: 'bar' }));
1
2
2
NOTE
Node.js의 querystring
메소드는 중첩된 객체를 문자열화 하는데 문제점이 있습니다.
중첩된 객체를 문자열화 해야할 경우가 잦을 경우 qs
라이브러리 사용이 권장됩니다.