BodyParser를 통해 클라이언트의 POST Request Data의 Body로부터 파라미터를 쉽게 추출할 수 있다.
npm install body-parser
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}))
서버에 body 데이터 파싱을 위한 body-parser Middleware를 추가해준다.
json()
은 application/json
형식의 데이터를 파싱한다. 또한, urlencoded()
는 application/x-www-form-urlencoded
형식의 데이터를 파싱한다. html의 form 태그를 사용하여 POST 방식으로 요청하거나, JQuery의 ajax 요청을 할 때 Default Content-type이 application/x-www-form-urlencoded
이기에 미들웨어로 추가해주는 것이 좋다.
또한, urlencoded의 extended 옵션은 true일시 내부적으로 qs 라이브러리를 사용, false일시 내부적으로 querystring 라이브러리를 사용하여 URL-Encoded Data를 파싱한다. qs 라이브러리를 사용할 시, 전달되는 객체에 depth가 있을 경우 depth를 나누어 표현해주고, querystring의 경우 키 값에 depth를 모두 포함시킨다.
추가적으로 두가지 방식의 데이터 형식은 다음과 같다.
Content-Type: application/x-www-form-urlencoded
name=kim&age=20
Content-Type: application/json
{
"name": "kim",
"age": "20"
}
Express v4.16.0 기준으로 Express에서도 Built-in body parser를 지원한다.
즉, body-parser
모듈을 사용할 필요가 없어졌다.
const express = require('express');
const app = express();
app.use(express.json());
app.use(express.urlencoded({extended: true}))