[NODE 강의] body-parser?

2021. 3. 3. 00:12Dev/Node

반응형

[클립명]

1. form (body-parser)

2. 정적파일

3. Global View Variable

 

body-parser란?

body-parser는 미들웨어이다. 즉, 요청(request)과 응답(response) 사이에서 공통적인 기능을 수행하는 소프트웨어이다. 그렇다면 역할은 무엇일까? 바로 요청의 본문을 지정한 형태로 파싱해주는 미들웨어이다.

아래의 테스트 코드에서 req.body를 콘솔로그로 출력해보면 undefined가 출력된다. 즉, Node.js의 웹프레임워크인 Express는 요청을 처리할 때 기본적으로 body를 undefined로 처리하고 있는 것이다.

app.get('/test', (req, res) => {
    res.send('test');
    console.log(req.body);
});

이럴 때 body-parser 미들웨어를 이용하면, request의 body부분을 자신이 원하는 형태로 파싱하여 활용할 수 있다.

body-parser 미들웨어는 Express 4.16.0 버전 이상부터 내장모듈로 포함됐기 때문에 별도로 설치할 필요 없이 아래와 같이 간단한 설정을 통해 바로 사용할 수 있다.

 

body-parser 설정하기

//body-parser 모듈을 불러온다.
const bodyParser = require('body-parser');

app.use(bodyParser.json());	//요청 본문을 json 형태로 파싱
app.use(bodyParser.urlencoded({extended: false}));  //

위처럼, require('body-parser')로 모듈을 불러와서 설정해도 되고, 아래와 같이 설정해도 된다. (Express 4.16 버전 이상)

app.use(express.json());
app.use(express.urlencoded({extended: false}));

json은 말 그대로 JSON 형태의 데이터 전달을 의미하고, urlencoded는 url 형식의 데이터 전달을 의미한다.

{'age':20, 'name':'뽀뽀뽀', 'hobby':'캠핑'} 처럼 json 형태로 값을 전달하면 그대로 request의 body에 값이 추가되고,

url-encoded 형태인 'age=20&name=뽀뽀뽀&hobby=캠핑' 로 값을 전달하면, {'age':20, 'name':'뽀뽀뽀', 'hobby':'캠핑'} 형태로 값이 request의 body에 추가된다.

 

{extended:false}  부분은 아래와 같이 작동한다.

 - true : Express에 기본 내장된 querystring 모듈을 사용한다.

 - false : querystring 모듈의 기능이 좀 더 확장된 qs 모듈을 사용한다. (qs 모듈 별도 설치 필요)

 

※ querystring 모듈?

url 주소 뒤에 붙어서 넘어오는 파라미터인 querystring을 쉽게 조작할 수 있는 기능을 제공하는 모듈이다.

 

body-parser는 json 말고도, 'RAW' 또는 'text'형태도 지원한다.

body-parser 자세히 보기

반응형