Express에서 post호출 시 request의 body에서 undefined가 발생한다.

다음과 같이 호출 했는데 결과가 undefined일 경우는 body-parser를 설정하지 않아서 이다.

# post 호출시, body에 {test:'hello"} 를 함께 전송

#router 소스
router.post('/', (req, res) => {
  console.log(req.body); undefined 발생
  res.redirect('/');
});

처리 방법은 body-parser를 express에서 사용하도록 설정 하면된다.

# body-parser 설치
$> npm install --save body-parser

#app.js 소스
const express = require('express');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser().json()); //bodyparser 사용 설정

이후 만나는 문제는 body의 크기가 크다는 오류를 만난 수 있다. 이때는 body의 크기를 옵션 설정하면 된다.

const bodyParser = require('body-parser');
app.use(bodyParser.json({limit: '50mb'})); //body 의 크기 설정
app.use(bodyParser.urlencoded({limit: '50mb', extended: true})); //url의 크기 설정

추가로 express 4.16부터는 body-parser를 포함 하고 있다.

const express = require('express')
const app = express();
app.use(express.json())
app.post('/', (req, res) => {
  console.log(req.body)
})

알아두자

참고 자료


Posted by lahuman