Frameworks/Node.js

[Node.js 강좌] 6. Node.js 내장 모듈 - HTTP

양디 2016. 1. 5. 11:03


지난 포스팅에 이어 오늘 포스팅도 node.js 설치 시에 자동으로 내장되어 있는 http 모듈에 대한 공부입니다.


HTTP(HyperText Transfer Protocol)은 TCP/IP 기반 프로토콜로, HTML 페이지를 전달하는 데 주로 쓰입니다.

자세한 내용은 HTTP 프로토콜에 대해 공부할 때에 쓰도록 하겠습니다(언제 쓰련지)


따라서 HTTP 모듈은 우리가 node.js를 공부하기 위한 목적인 웹 서버를 구동하기 위하여 사용되는 기본 모듈입니다.

(그러나 이후에는 Express 모듈을 사용할 예정입니다.)


우선 간단하게 모듈을 불러오는것 부터 시작해야겠죠 ?


1
var http = require('http');
cs



HTTP 모듈에는 각종 요청과 연결을 처리하기 위한 Server 객체가 존재합니다.


이를 생성하기 위해서는 createServer() 함수가 필요하고, 종료하기 위해서는 close() 함수가 필요합니다.


또한 서버를 생성한 이후에는 접속하는 포트를 할당하기 위한 listen() 함수가 필요합니다.


1
2
3
4
5
var http = require('http');
var server = http.createServer();
server.listen(52273function(){
  console.log("Server Listening on port number 52273");
});
cs


이게 가장 기본적인 모습입니다. 현재 서버가 열려있지만, 이 서버에 들어갔을 때 어떻게 처리할 것인지에 관한 코드가 전혀 없습니다.

따라서 서버를 실행한 후에 localhost:52273으로 접속한다고 하더라도 아무 내용이 없는 페이지만 뜰 뿐입니다.


이를 위하여 서버를 생성할 때에 보내줄 내용들을 함께 입력해주어야 합니다.


1
2
3
4
5
6
7
8
9
var http = require('http');
var server = http.createServer(function(request, response){
  response.writeHead(200, {'Content-Type''text/html'});
  response.end('<h1>Hello Dalkom IT!</h1>');
});
server.listen(52273function(){
  console.log("Server Listening on port number 52273");
});
 
cs


위 코드를 보면 서버를 생성할때 response에 몇가지 함수를 통해 처리 내용을 설정하는 것을 볼 수 있습니다.

먼저 writeHead(statusCode, object) 함수는 http 프로토콜의 header를 설정하는 부분입니다.

Status Code와 헤더는 Http 포스팅에 올리도록 하겠습니다.


여기서는 간단하게 200 코드는 OK, 즉 정상적으로 받았다는 것이며 content-type은 그 헤더 중 일부분입니다.


End([data], [encoding]) 함수는 본문을 작성하는 것입니다.


이를 실행 후에 웹브라우저로 접속해보면 다음과 같은 모습을 볼 수 있습니다.



웹브라우저의 모습.


본문 페이지 소스



보시면 end의 내용이 그대로 본문에 들어가 있다는 것을 알 수 있습니다.


현재 본문을 직접 end 함수를 통하여 작성하여야 하는 불편함이 있기 때문에,

내장 모듈 중에 하나인 fs (파일 시스템) 모듈을 통해서 html 파일을 읽어와서 집어 넣는 방법이 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
var http = require('http');
var fs = require('fs');
 
var server = http.createServer(function(request, response){
  fs.readFile('test.html'function(error, data){
    response.writeHead(200, {'Content-Type''text/html'});
    response.end(data);
  })
});
server.listen(52273function(){
  console.log("Server Listening on port number 52273");
});
cs


fs.readFile(파일명, 콜백함수) 를 통하여 파일을 읽어온 후에 읽어온 data를

end 함수를 통해서 보내는 모습입니다.


test.html이라는 파일을 생성 후에 실행하셔야 합니다. 실행해보면 ,





위와 같이 동일한 방식으로 사용할 수 있다는 것을 알 수 있습니다.


HTTP 모듈은 위와 같이 http 서버를 위해 사용합니다. 

그러나 웹서버 모듈로는 Express 모듈로 라우팅, 파싱, 로그 등의 많은 기능들이 포함되어 있는 강력한 모듈이 있기 때문에

다음 시간부터 공부할 Express 모듈을 처음부터 배우고 사용하는 것을 더 추천합니다


끝!


댓글