웹 사이트를 사용자에게 제공하기 위해서는 정적 혹은 동적 웹 서버를 필요로 합니다.
이번 포스트에서는 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 반환
}
더보기

메인 페이지 호출

루트 페이지

로그인 페이지 호출

로그인 페이지

존재하지 않는 페이지 호출

404 에러 페이지
웹 서버 실습 결과
임의로 간단한 두 페이지 응답을 만들어 테스트를 진행했습니다.
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 에러


Node.js에서 제공하는 두 모듈을 활용해서 나만의 웹 서버를 만들어보았습니다.
포스트를 끝까지 봐주셔서 감사합니다!
'JavaScript' 카테고리의 다른 글
구조 분해 할당! 나도 이제 중간 변수(temp) 없이? (0) | 2024.09.02 |
---|---|
Node.js의 생태계 (0) | 2024.08.30 |
Express - 단순하게 API 제작하기 (0) | 2024.08.30 |
Callback Hell? 거기 무서운 곳이야? (0) | 2024.08.29 |
JavaScript 알아보기 (0) | 2024.08.21 |