본문 바로가기

JavaScript

Node.js로 웹 서버 구축하기

웹 사이트를 사용자에게 제공하기 위해서는 정적 혹은 동적 웹 서버를 필요로 합니다.

이번 포스트에서는 Node.js를 활용해서 웹 서버를 구축해보겠습니다.


HTTP 모듈

공식 문서를 살펴보면 웹 서버의 기능을 포함하는 HTTP 모듈을 제공합니다.

해당 모듈을 가져오는 방법은 아래와 같습니다.

const http = require('node:http');

HTTP 모듈을 사용해서 서버 객체를 만들 때는 'createServer()' 메서드를 사용해주어야 합니다.

서버와의 연결을 수신하려면 'listen()' 메서드를 이용합니다.

const server = http.createServer().listen(8888); // 8888번 포트로 서버 수신

클라이언트의 요청에 HTML로 응답할 때 올바른 헤더를 포함해야 합니다.

헤더는 'writeHead()' 메서드를 통해서 설정할 수 있습니다.

http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/html'}) // 상태 코드, 응답 헤더
  response.write('Hello');
  response.end();
}

 

URL 모듈

공식 문서를 살펴보면 쿼리 문자열을 쉽게 분리해주는 URL 모듈을 제공합니다.

아래와 같은 방법으로 제공받을 수 있습니다.

const url = require('node:url');

URL 객체를 가져오는 방법에는 'new URL()'과 'url.parse()' 두 가지 방법이 있습니다.

후자의 경우 현재는 deprecated 상태이므로 전자의 방법으로 진행했습니다.

http.createServer(function (request, response) {
  const myURL = new URL(request.url, baseURL);
  
  console.log(myURL.host); // Domain 반환
  console.log(myURL.pathname); // Path 반환
  console.log(myURL.query); // Parameter 반환
}

 

더보기

웹 서버 실습 결과

임의로 간단한 두 페이지 응답을 만들어 테스트를 진행했습니다.

function main() {
  response.writeHead(200, {'Content-Type' : 'text/html'});
  response.write('Subin\'s Main page');
  response.end();
}

function login() {
  response.writeHead(200, {'Content-Type' : 'text/html'});
  response.write('Subin\'s Login page');
  response.end();
}

1. 메인 화면

메인 페이지 호출
루트 페이지

2. 로그인 화면

로그인 페이지 호출
로그인 페이지

3. 404 에러

존재하지 않는 페이지 호출
404 에러 페이지

Node.js에서 제공하는 두 모듈을 활용해서 나만의 웹 서버를 만들어보았습니다.

포스트를 끝까지 봐주셔서 감사합니다!