body-parser을 쓰는 이유는 무엇일까 ?

GonnabeAlright·2021년 11월 29일
1
post-thumbnail
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());

body parser을 쓰는 이유 ?

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 모듈을 사용한다.

queryString

The queryString module provides utilities for parsing and formatting URL query strings.

qs

A querystring parsing and stringifying library with some added security.

queryString과 qs 라이브러리 둘다 url 쿼리 스트링을 파싱해주는 같은 맥락에 있으나 qs가 추가적인 보안이 가능하고 말 그대로 extended가 확장된 형태이다. 기본이 true 값이니 qs 모듈을 설치하지 않는다면 false 값으로 따로 설정을 해줘야 한다.

(default: true)extended: trueextended: false
객체 안 객체 파싱OX
queryString 모듈XO
qs 모듈OX

0개의 댓글