본문 바로가기
개발 공부/Node.js

[Node.js] HTTP 모듈을 통해 Web Server 생성하기

by sngynhy 2022. 1. 26.

node.js에서 제공하는 내장 'http' 모듈 사용

node.js의 내장 모듈 목록 >> https://www.w3schools.com/nodejs/ref_modules.asp

 

소스코드)

// WebServer 생성 코드
// require('추가할 모듈명') : 모듈 사용 선언
const http = require('http'); // node.js에서 제공하는 내장 'http' 모듈 사용 - 초기값이 변하지 않도록 상수(const)로 선언
const hostname = '127.0.0.1';
const port = 1337;

// createServer() : 컴퓨터의 포트에서 수신 대기하는 서버 생성
// server.listen() : 지정된 포트 또는 경로에 리스너를 생성
http.createServer((req, res) => {
    res.writeHead(200, {'Content-Type' : 'text/plain'});
    res.end('Hello world\n');
}).listen(port, hostname, () => {
    console.log(`Server running at http://${hostname}:${port}/`);
});

결과)

소스코드 분석)

1. 웹서버를 실행하기 위해 http 모듈을 require로 불러온다.

(requrie는 JAVA의 import와 같은 역할을 하며 require 후에 해당 모듈을 변수에 담은 후 하나의 독립적인 객체로 사용)

const http = require('http');

2. http 모듈에 정의되어 있는 createServer() 함수로 서버를 생성한다.

createServer() 함수에 파라미터로 콜백 함수가 전달되고 이벤트 발생 시 콜백 함수를 호출한다.

http.createServer((req, res) => {
    res.writeHead(200, {'Content-Type' : 'text/plain'});
    res.end('Hello world\n');
});

writeHead() 함수는 요청에 대한 응답 헤더를 보내준다.

첫 번째, 두 번째 인자로 각각 http 상태 코드(statusCode)와 상태 메세지(statusMessage - 생략가능)를 넘겨주고,

마지막 인자(headers)로는 응답 헤더를 넘겨준다.

브라우저는 header 값을 보고 서버에서 넘어온 값을 파악하여 실제 값을 header에 셋팅된 설정에 맞게 화면에 출력한다.

response.writeHead(statusCode[, statusMessage][, headers])
res.writeHead(200, {'Content-Type' : 'text/plain'});

end() 함수는 모든 응답 헤더와 본문이 전송되었음을 서버에 알리고, 파라미터로 데이터를 담아 사용자에게 전달한다.

response.end([data[, encoding]][, callback])
res.end('Hello world\n');

※ 참고

  1. https://www.w3schools.com/nodejs/nodejs_http.asp
  2. https://www.inflearn.com/course/nodejs-%EA%B0%95%EC%A2%8C-%EC%83%9D%ED%99%9C%EC%BD%94%EB%94%A9/lecture/3510?tab=curriculum