본문 바로가기

공부/Node.js

[Node.js] express로 웹 서버 만들기(요청 객체와 응답 객체)

이번에는 요청 객체와 응답 객체에 관해서 공부할 것이다.

 

send()메소드

send() 메소드는 Buffer, Json, Json배열 등 다양한 데이터를 보낼 수 있다.

 

var express = require('express')
    , http = require('http')

var app = express();

app.set('port', process.env.PORT || 3000);

app.use(function(req, res, next){ //미들웨어의 역할을 하는 녀석
    console.log('첫번 째 미들웨어에서 요청을 처리함');
    
    res.send({name : '소녀시대', age:20});
})


http.createServer(app).listen(app.get('port'), function(){ // 서버를 구동
    console.log('익스프레스 서버를 시작하였습니다 : ' + app.get('port'));
});

이전의 메소드에서 하나의 미들웨어만 가지고 send()메소드를 이용해서 JSON 형식의 name과 age를 보내보았다.

 

이런 식으로 파일이 전달된 것을 알 수 있다. 

 

status(), sendStatus()메소드

이 두 메소드는 상태코드를 전달하는 역할을 한다.

 

var express = require('express')
    , http = require('http')

var app = express();

app.set('port', process.env.PORT || 3000);

app.use(function(req, res, next){ //미들웨어의 역할을 하는 녀석
    console.log('첫번 째 미들웨어에서 요청을 처리함');
    
    res.sendStatus(403);
})


http.createServer(app).listen(app.get('port'), function(){ // 서버를 구동
    console.log('익스프레스 서버를 시작하였습니다 : ' + app.get('port'));
});

첫 번재 코드는 sendStatus로 현재의 상태를 코드만 전해주면 된다.

 

 

결과가 이렇게 나오며 다른 메세지를 추가하지 않아도 Forbidden이라는 문구가 찍힌다,

 

res.status(403).send('Forbidden입니다.');

이번에는 status로 상태코드 일 때 메세지를 전달하는 메소드이다. 이 메소드는 send를 동반해야한다.

 

 

sendStatus와 다르게 메세지를 넣어야하는 메소드이다.

 

redirect()메소드

이 메소드는 경로를 강제로 변경하는 메소드이다.

 

var express = require('express')
    , http = require('http')

var app = express();

app.set('port', process.env.PORT || 3000);

app.use(function(req, res, next){ //미들웨어의 역할을 하는 녀석
    console.log('첫번 째 미들웨어에서 요청을 처리함');
    
    res.redirect('http://www.google.com');
})


http.createServer(app).listen(app.get('port'), function(){ // 서버를 구동
    console.log('익스프레스 서버를 시작하였습니다 : ' + app.get('port'));
});

redirect()메소드를 통해서 구글이 나오도록 했다.

 

바로 구글 페이지로 이동해서 결과를 볼 수는 없지만 redirect를 이용하면 강제로 경로변경이 가능하다는 것은 확인했다.

 

헤더와 파라미터

 

이번에는 파라미터를 통해서 값을 전달 받을 것이다. 주소값에 파라미터를 넣어서 전달하는 방식이다.

 

var express = require('express')
    , http = require('http');


var app = express();

app.set('port', process.env.PORT || 3000);

app.use(function(req,res,next){
    console.log('첫번째 미들 웨어에서 요청을 처리함.');
    
    var useAgent = req.header('User-Agent');
    var param = req.query.name;
    
    res.writeHead('200', {'Content-Type' : 'text/html; charset=utf8'});
    res.write('<h1>이제 슬슬 질릴만큼 했다.'+ param +'</h1>');
    res.end();
})

http.createServer(app).listen(app.get('port'), function(){
    console.log('익스프레스 서버가 연결되었습니다.' + app.get('port'));
})

코드는 크게 변한 점은 없다 단지 중간에 req.header를 통해서 header를 나타내고 param을 에는 req.query.(헤더변수)로 값을 받아서 사용하는 것을 볼 수 있다.(req.query는 GET방식으로 파타미터를 받음)

 

이건 그냥 결과 값이다 주소를 보면 localhost:3000인데 이 말인 즉 아무 값도 보내지 않았기 때문에 param이 undefined가 되었다. 

 

이번에는 주소값을 보면 localhost:3000 뒤에 /?name=12355135로 파라미터가 붙어있다. GET은 이런 방식으로 데이터를 주고 받는다.

 

이렇게 다양하게 주고 받는 방식이 있는데 아무래도 많이 들어본 GET 방식과 POST 방식을 사용하지 않을까 생각이 든다.