Nodejs Express 이용한 post 호출시 request body에서 undefined 발생 해결
안녕하세요.
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('ERROR - 페이지를 찾을 수 없습니다.'); }); // 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 처리에 대해 알아보았습니다.
감사합니다.
from http://meyouus.tistory.com/68 by ccl(A) rewrite - 2020-03-07 08:20:15
댓글
댓글 쓰기