어떻게 하면 post방식으로 보낸 데이터를 서버측에서 확인할 수 있는가?
요약.
// get 방식의 경우에는 express 가 기본적으로 query api를 제공하지만 ,
// post방식의 경우에는 기본적으로 body api를 제공하지 않으므로,
// body-parser 혹은 multer와 같은 미들웨어가 따로 필요하다.
// 따라서 위와같은 미들웨어를 npm으로 설치한 후에 1.require --> 2.use 를 이용하여 사용한다.
==========================================================
post.jade
doctype html
html
head
meta(charset='utf-8')
body
form(action='/form_receiver' method='post')
p
input(type='text' name='title')
p
textarea(name='description')
p
input(type='submit' value='forward Server')
// post 방식으로 해보자.
// post 방식을 사용했을 경우에는 정상적으로 아래의 정보들이 넘어가지를 않는다.
==========================================================
app.get('/postGo', function(req, res){
res.render('post');
});
// express 의 get으로 처리하면 안된다.
post방식을 처리할 때는 app.post로 하는 것이 맞다.
아래의 경우에는 request객체의 query를 사용한 것
// undefined 가 뜬다. title, description에 undefined .
// app.post('/form_receiver',function(req, res){
// var tit = req.query.title;
// var dsc = req.query.description;
// res.send('title: '+ tit+' and descriptrion: '+ dsc);
// });
기본적으로 request 객체 req 안에 사용자가 요청한 정보들이 들어가 있다.
즉, req 의 query를 사용하여 title을 받아올 수 없다.
그럼 어떻게 post 방식으로 처리하였을 때 form_receiver 패쓰로 접근시 값을 나타낼 수 있는가.
req 객체의 query가아닌 body로 받아줘야한다.
제약이 있다. body api를 사용하기 위해서는 body-parser 혹은 multer와 같은 middleware(미들웨어)를 사용하여 제어해야한다.
body-parser 모듈을 설치해보자. npm install body-parser --save
var bodyparser = require('body-parser'); 를 app.js 입력하여 해당 모듈을 들여오자.
app.js로 들어오는 모든 요청들은 body-parser라는 미들웨어를 먼저 통과한 다음에 라우터가 동작하게 된다.
이렇게 미들웨어를 들여오고 use로 이 미들웨어(body-parser를 연결시켜서 request 객체의 body api를 사용할 수 있게 만든다.
================================================================
++ app.js
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: false}));
// request 객체의 body를 사용해보자.
app.post('/form_receiver',function(req, res){
var tit = req.body.title;
var dsc = req.body.description;
res.send('title: '+ tit+' and descriptrion: '+ dsc);
});
================================================================
get 방식과 달리, url 상에서 요청정보에 대한 값이 나타나지 않음을 볼 수 있다.
'nodejs' 카테고리의 다른 글
(22) supervisor 를 사용해보자. (1) | 2016.06.07 |
---|---|
(21) 10~20 express 모듈을 사용하여 작성한 app.js 전체 소스코드 (0) | 2016.06.06 |
(19) 데이터 전송 (GET 방식) (0) | 2016.06.02 |
(18) GET vs POST (0) | 2016.06.01 |
(17) semantic url (의미론적 url) vs 쿼리스트링 방식 (0) | 2016.06.01 |