콘솔
$ npm i body-parser
const bodyParser = require('body-parser'); app.use(bodyParser.raw()); app.use(bodyParser.text());
요청 데이터 종류에 대해 간단히 살펴봅시다. JSON은 JSON 형식의 데이터 전달 방식이고, URL-encoded는 주소 형식으로 데이터를 보내는 방식입니다. 폼 전송은 URL-encoded 방식을 주로 사용합니다. urlencoded 메서드를 보면 { extended: false }라는 옵션이 들어 있습니다. 이 옵션이 false이면 노드의 querystring 모듈을 사용해 쿼리스트링을 해석하고, true이면 qs 모듈을 사용해 쿼리스트링을 해석합니다. qs 모듈은 내장 모듈이 아니라 npm 패키지이며, querystring 모듈의 기능을 좀 더 확장한 모듈입니다.
4.2절에서 POST와 PUT 요청의 본문을 전달받으려면 req.on('data')와 req.on('end')로 스트림을 사용해야 했던 것을 기억하나요? body-parser를 사용하면 그럴 필요가 없습니다. 이 패키지가 내부적으로 스트림을 처리해 req.body에 추가합니다.
예를 들어, JSON 형식으로 { name: 'zerocho', book: 'nodejs' }를 본문으로 보낸다면 req.body에 그대로 들어갑니다. URL-encoded 형식으로 name=zerocho&book=nodejs를 본문으로 보낸다면 req.body에 { name: 'zerocho', book: 'nodejs' }가 들어갑니다.