body-parser

heumheum2·2020년 9월 8일
0
post-thumbnail

body-parser는 클라이언트 POST 요청 데이터의 body로 부터 파라미터 값의 추출을 편리하게 도와주는 미들웨어이다.

body-parser를 이용하여 아래 코드와 같이 작성했다.

import * as express from 'express';
import { Request, Response } from 'express';
import * as bodyParser from 'body-parser';

const app = express();
app.use(bodyParser.json());

app.post('/users', (req: Request, res: Response) => {
  console.log(req.body);
});

body-parser 사용하지 않을 경우에는 아래 코드와 같다.

import * as express from 'express';
import { Request, Response } from 'express';

const app = express();

app.post('/users', (req: Request, res:Respones) => {
  console.log(req.body);
});

크게 달라 보이지 않지만, console.log(req.body) 라인에서 undefined Error가 나온다.
그 이유는 req.body의 default value가 Undefined이기 때문이다.

그렇기에 body-parser 를 사용하면 해당 문제를 해결 할 수 있다.

body-parser에는 urlencoded() 메소드가 있고, 그 안에는 {extended : boolean} 옵션이 있다. true값일 경우 qs library를 사용, false값일 경우 query-string library를 사용한다.

qs library

import * as qs from 'qs';

const result = qs.parse("person[name]=bobby&person[age]=3");
console.log(result);
// { person: {name: 'bobby', age: '3'} }

query-string library

import * as queryString from 'query-string';

const result = queryString.parse("person[name]=bobby&person[age]=3");
console.log(result);
// {'person[age]': '3', 'person[name]': 'bobby' }

위의 두 코드의 결과를 보면 파싱하는 방법이 다르다는것을 볼 수 있다.

원하는 옵션 선택하면 될 것 같다.

이제는 express에서 v4.16.0 기준으로 body-parser 를 넣었다고 하니, 아래 코드와 같이 작성하면 될 것이다.

import * as express from 'express';

const app = express();
app.use(express.json());
app.use(express.urlencoded({extended : true}));

참고

[1분 패키지 소개] : body-parser를 소개합니다. 하지만, body-parser를 쓰지 마세요.
What does 'extended' mean in express 4.0?

profile
커피가 본체인 개발자 ☕️

0개의 댓글