const bodyParser = require('body-parser'); // post로 요청된 body를 쉽게 추출할 수 있는 모듈이다. (post 요청 데이터 추출) // 추출된 결과는 body 속성으로 저장된다.
// parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: true })); // parse application/json app.use(bodyParser.json());
http 모듈
로만 post body를 파싱하려면, req.on('data', function(chunk) { body += chunk; });
와 같이 이벤트를 등록해야 한다. 그 다음에 인코딩처리를 해줘야한다.
하지만 body-parser를 쓰면 bodyParser.urlencoded()를 등록하면 자동으로 req에 body 속성이 추가되고 저장된다.
만약 urlencoded()에 아무 옵션을 주지 않는다면 body-parser deprecated undefined extended: provide extended option
같은 문구가 뜬다.
extended는 중첩된 객체표현을 허용할지 말지를 정하는 것이다.
객체 안에 객체를 파싱할 수 있게 하려면 true로 설정한다.
내부적으로 true를 하면 qs 모듈을 사용하고 false면 query-string 모듈을 사용한다.
The queryString module provides utilities for parsing and formatting URL query strings.
A querystring parsing and stringifying library with some added security.
queryString과 qs 라이브러리 둘다 url 쿼리 스트링을 파싱해주는 같은 맥락에 있으나 qs가 추가적인 보안이 가능하고 말 그대로 extended가 확장된 형태이다. 기본이 true 값이니 qs 모듈을 설치하지 않는다면 false 값으로 따로 설정을 해줘야 한다.
(default: true) | extended: true | extended: false |
---|---|---|
객체 안 객체 파싱 | O | X |
queryString 모듈 | X | O |
qs 모듈 | O | X |