티스토리 뷰

반응형

 

 

안녕하세요.

 

이번 글에서는 http모듈을 이용해 클라이언트가 요청을 하면 간단한 내용을 응답하는 서버를 구축해보겠습니다.

 

(*익스프레스는 사용하지 않습니다.)

 


server1.js

 

const http = require('http');		//(1)


http.createServer((request, response) => {		//(2)

    response.write('<h1>Hello Node!</h1>');
    
    response.end('<p>Hello Server!</p>');
    
}).listen(8080, () => {		//(3)

    console.log('server1 : 8080포트 대기 중');
    
});

 

[파일 실행]

우선, 작성한 파일을 실행시켜보도록 하겠습니다. 실행방법은 아래 이미지와 같이 커맨드를 입력해 진행할 수 있으며, cmd창에서 진행하였습니다. (vscode의 powershell에서도 동일하게 진행이 가능합니다.)

작성한 js파일과 동일한 경로에서 실행하면 좀 더 수월하게 진행하실 수 있습니다.

 

[서버에 요청]

브라우저의 주소창에 "localhost:8080"을 입력하면 응답(response)에 작성해둔 내용을 확인할 수 있습니다.

[코드 설명 - server1.js]

(1) 필요한 모듈은 require 함수를 이용해 로드할 수 있습니다. http모듈은 내장 모듈이기 때문에 바로 사용할 수 있지만, 그 외 모듈은 npm(node package manager)으로 설치해서 사용할 수 있습니다.

 

이번 내용에서는 별도로 필요한 외장 모듈이 없어 npm을 사용하진 않았지만, 이후 내용에서는 npm을 사용하여 진행할 예정입니다.

 

 

(2) createServer 함수를 이용해 서버를 생성하고, request 매개변수로 요청에 관한 정보를 가져오고 response 매개변수로 응답에 관한 정보를 추가로 담을 수 있습니다. 

 

response에는 위의 예시와 같이 문자열을 전달할 수도 있지만, 전달하려는 파일을 통째로 전달할 수도 있습니다. 이 내용은 다음 예제로 확인해보도록 하겠습니다.

 

 

(3) listen 함수에 공개할 포트 번호와 해당 포트에 연결 완료 후 실행될 콜백 함수를 작성합니다.

 


server2.html

 

<!-- response로 전달 할 html 파일입니다. -->
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <title>Node 서버</title>
</head>
<body>
    <h1>Hello World!</h1>
</body>
</html>

 

server2.js

 

const http = require('http');
const fs = require('fs');		//(1)

http.createServer((request, response) =>  {

    fs.readFile('./server2.html', (err, data) => {		//(2)
    
        if (err) {
        
            throw err;
            
        }

        response.end(data);
        
    });
    
}).listen(8081, () => {

    console.log('server2 : 8081번 포트에서 대기 중');
    
});

 

[파일 실행 및 서버에 요청]

파일 실행은 위 예제와 동일하며, server2.html 파일은 server2.js 파일과 동일한 경로에 위치해두었습니다.

 

주소창에 "localhost:8081"을 입력했을 때 아래와 같이 나오면 성공입니다.

 

[코드 설명 - server2.js]

(1) fs모듈은 파일 시스템과 상호작용 하기 위한 모듈입니다. 현재 예시에서는 응답에 포함시킬 파일을 읽어올 때 사용합니다.

 

 

(2) fs모듈을 이용해 입력한 경로의 파일을 읽어옵니다.

 

위의 예시에서 문자열을 전달한 것과 다르게, 읽어온 파일(data)을 클라이언트로 가는 응답에 담을 수 있습니다.

 


여기까지 http모듈을 이용해 Node.js 서버를 생성하고 동작시켜보았습니다. 

 

소스코드로 보면 몇 줄 안되지만, 화살표 함수나 내장 모듈 동작 방식 등 생소한 내용을 살펴보느라 적지 않은 시간을 들이게 되었습니다. 


읽어주셔서 감사합니다.

반응형