티스토리 뷰

반응형

HTTP와 관련된 내용은 다른 포스팅에서 자세히 적는게 나을듯 하다.

이 포스팅에서는 노드 서버 객체를 생성해서 서버를 띄우고 

간단하게 url 값을 이용해서 띄우는 간단한 실습했던 내용을 적게될 것 같다.


웹 서버가 하는 일은 요청을 받고 그에 대한 응답을 전달하는 것.

우선, 요청을 받기 위해서는 서버가 있어야 한다. 

server 객체 

server 객체는 http 통신을 위한 서버와 관련된 객체다.
server 객체를 통해 서버를 생성, 실행, 중단할 수 있다. 
 

var http = require('http');


var server = http.createServer(function(request, response) {

});


server.on('request', function(code) { // 클라이언트에서 요청 발생

    console.log('Request ON');

});


server.on('connection', function(code) { // 클라이언트에서 접속 실행

    console.log('Connection ON');

});


server.on('close', function(code) { // 서버 종료

    console.log('Close ON');

});


server.listen(12345, function() {

    console.log('웹서버 실행 중.. 주소 : 127.0.0.1:12345')

});


server 객체는 createServer() 메소드를 통해 생성하게 된다. 

listen() 메소드는 listen(포트번호)로 형태의 메소드로

서버를 실행시킨다. 


위의 예제 작성 후 

브라우저 주소창에 127.0.0.1:12345 로 실행 시 실제 서버가 실행하는 것을 확인할 수 있다.


위의 예제에서 on 메소드는 이전 장에서 보았던

이벤트 핸들링을 하는 메소드와 동일하니 

request, connection, close 이벤트를 처리하는 것이라는 점은 쉽게 알 수 있다.


resonse 객체


서버가 실행만 된다고 해서 웹페이지가 띄워지는 것이 아니다. 

response 객체는 서버에 요청 시 어떤 값을 노출할지에 대한 내용을 담고 있는 객체다. 


서버 요청 시 response에 대한 값을 지정하지 않으면

127.0.0.1:12345로 접속을 했어도 별 다른 동작이 일어나지 않을 것이다. 

다음은 클라이언트 요청 시 

응답 값을 지정해주어 화면에 Hello MY World!!!가 출력되도록 만드는 예제다. 


 var http = require('http');


var server = http.createServer(function(request, response) {

response.writeHead(200, {'Content-Type': 'text/html'});

response.end('<h1>Hello MY World!!!</h1>')

});


server.listen(12345, function() {    

console.log('웹서버 실행 중.. 주소 : 127.0.0.1:12345')

});


writeHead()는 응답 헤더를 작성하여 

응답 코드 값과 기타 정보를 응답 헤더에 적는다.

end()는 응답 본문 값을 담는다. 


응답 코드는 요청 값에 대한 응답 상황을 의미하며, 

간단하게 정의하자면 다음과 같다. 


 1XX

 처리 중

 2XX

 성공

 3XX

 리다이렉트 

 4XX

 클라이언트 오류

 5XX

 서버 오류


response의 헤더에는 쿠키 값을 지정할 수 있다. 

다음은 헤더에 쿠키 값을 지정하는 예시다. 


var fs = require('fs');

var http = require('http');


var expireDate = new Date();

expireDate.setDate(expireDate.getDate() + 7);


http.createServer(function (request, response) {

        response.writeHead(200, {

                    'Content-Type': 'text/html',

                    'Set-Cookie': ['lunch=bob', 'dinner=Chicken!;Expires =' + expireDate.toUTCString()]

                });


        response.end(request.headers.cookie);

    })

}).listen(12345, function() {

    console.log('웹 서버 실행 중..');

})


(expires 값은 쿠키 값의 유효 기간을 설정하는 부분)


쿠키 정보를 브라우저 개발자 모드에서도 확인할 수 있다. 

F12 > Application > Cookies


request 객체


request 객체를 통해서 사용자의 요청이 일어날 때의 정보를 확인할 수 있다. 


 var http = require('http');

 var fs = require('fs');

 var url = require('url');


 http.createServer(function(request, response) {

var pathname = url.parse(request.url).pathname;


var query = url.parse(request.url, true).query;

var cookie = request.headers.cookie;

if ( pathname == '/') {

var body = "";

if (query) {

body += 'query : ' + JSON.stringify(query); 

}


if (cookie) {

body += "cookie : " + JSON.stringify(cookie);

}

response.writeHead(200, {'Content-Type':'text/html',

 'Set-Cookie': ['fruit=banana', 'location=seoul']})

response.end(body);

} else if (pathname == '/otherPage') {

fs.readFile('./HTMLPage.html', function(error, data) {

response.writeHead(200, {'Content-Type' : 'text/html'});

response.end(data);

});

} else {

response.writeHead(302, {'Location': 'http://www.naver.com'});

response.end()

}

 }).listen(12345, function() {

  console.log('서버 접속 완료.');

 });



위의 예시는 127.0.0.1:12345로 접근하게 되면 

url의 parameter 값이 있으면 노출시키다.


또한 url path 값이 otherPage인 경우에는 

다른 html 파일이 출력되도록 되어 있으며 

서버에 지정되지 않은 path로 접근 시 www.naver.com으로 이동하도록 되어 있다.


위의 예시로 확인할 수 있듯이 사용자의 요청값 (request 객체)를 이용해서

요청 정보를 확인할 수 있다. 

반응형

'정리하기 > 모던웹을 위한 Node.js' 카테고리의 다른 글

외부 모듈  (0) 2017.06.06
이벤트  (0) 2017.05.20
node.js의 전역 객체  (0) 2017.05.14
Node.js 개요  (0) 2017.05.11
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함