반응형
안녕하세요.
Nodejs Express를 이용하여 post 호출 시 request body undefined 발생 하는 경우
body-parser 모듈을 이용하여 처리하면 됩니다.
router.post('/bodyTest', function(req, res){
console.log(req.body); // undefined 발생
res.send(req.body.key1); // req.body undefined로 인하여 TypeError 발생
});
▼ body-parser 모듈을 이용하여 request body 처리
body-parser 모듈은 request body를 json 형식으로 변환
// body-parser 설치
npm install body-parser --save
// body-parser 설정
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
require를 이용하여 body-parse 모듈을 등록하고
express를 통해 만든 app 객체의 .use()를 활용하여, bodyParser.urlencoded를 지정합니다.
request 객체의 body에 대한 url encoding의 확장을 할 수 있도록 extended:true라는 option을 설정해 주었습니다.
app.use(bodyParser.json()) : request body에 오는 데이터를 json 형식으로 변환
이렇게 body-parser 모듈은 request body 객체 안의 데이터를 json형식으로 변환하여 활용할 수 있도록 지원합니다.
※ Sample Code
// Express 기본 모듈 불러오기
var express = require('express')
, http = require('http')
, path = require('path');
// 익스프레스 객체 생성
var app = express();
// 기본 속성 설정
app.set('port', process.env.PORT || 3000);
// body-parser
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
// 라우터 객체 참조
var router = express.Router();
router.post('/bodyTest', function(req, res){
console.log(req.body);
console.log(req.body.key1);
console.log(req.body.key2);
res.send(req.body);
});
// 라우터 객체를 app 객체에 등록
app.use('/', router);
// 등록되지 않은 패스에 대해 페이지 오류 응답
app.all('*', function(req, res) {
res.status(404).send('<h1>ERROR - 페이지를 찾을 수 없습니다.</h1>');
});
// Express 서버 시작
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
▼ Post 데이터 전송
▼ 데이터 수신 처리
body-parser 모듈 활용방법과 request body undefined 처리에 대해 알아보았습니다.
감사합니다.
반응형
'IT > NodeJS' 카테고리의 다른 글
Node mybatis-mapper를 이용한 mapper xml 개발 샘플 (0) | 2020.01.01 |
---|---|
Node.js oracledb를 통한 오라클 연결 (0) | 2019.12.09 |
Visual Studio Code 디버깅(debugging) for Node.js (0) | 2019.12.08 |
Node.js 설치와 NPM 이해하기 (0) | 2019.12.07 |
최근댓글