어떻게 하면 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 상에서 요청정보에 대한 값이 나타나지 않음을 볼 수 있다. 


+ Recent posts