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)
})