Node.js + Typescript 서버 실행

Simon·2024년 3월 14일

지난번에 초기 설정에 이어서 서버를 실행시키는 과정을 간다하게 작성해보려한다.

1. 모듈 불러오기

파일 상단에서 http 모듈과 타입으로 사용할 세가지 타입을 import 한다.

import http, { IncomingMessage, Server, ServerResponse } from "http";

2. 서버 설정

임의의 상수에 호스트 이름과 port번호를 할당한다.

const hostname: string = "127.0.0.1";
const port: number = 5000;

3. 서버 생성

http.createServer 함수를 사용하여 서버객체를 생성한다.
서버 객체는 들어오는 HTTP 요청을 처리하는 콜백함수를 인수로 받는다.
콜백 함수는 두 개의 인수를 전달 받는다.

  • request: 들어오는 HTTP 요청에 대한 정보를 담고 있는 객체입니다. URL, 헤더, 바디 등을 포함
  • response: 클라이언트에게 응답을 보내는 데 사용되는 객체
const server: Server = http.createServer(
  (request: IncomingMessage, response: ServerResponse) => {
    response.statusCode = 200;
    response.setHeader("Content-Type", "text/html");
    response.write("<html><body><h1>Hello, World!</h1></body></html>");
    response.end();
  }
);

각 라인의 의미!

  • response.statusCode = 200 : 응답의 상태 코드를 200으로 설정한다. 이것을 응답의 성공을 의미
  • response.setHeader("Content-Type", "text/html"): Content-Type 헤더를 "text/html"로 설정. 이는 브라우저에게 응답 본문이 HTML 내용임을 알려준다.
  • response.write(): 응답 본문에 실제 HTML 내용을 작성
  • response.end(): 응답을 종료하며, 더 이상 데이터가 없음을 나타냄

4. 서버 시작

server객체의 listen 메서드를 호출하여 서버를 시작한다.
세 가지 인수를 제공한다.

server.listen(port, hostname, () => {
console.log(Node JS Server at http://${hostname}:${port});
});

  • port: 서버가 기다리는 포트 번호 (이 경우 5000)
  • hostname: 서버가 기다리는 호스트 이름 또는 IP 주소 (이 경우 로컬호스트를 위한 "127.0.0.1")
  • callback: 서버가 성공적으로 시작되면 호출되는 함수

전체 코드

import http, { IncomingMessage, Server, ServerResponse } from "http";

const hostname: string = "127.0.0.1";
const port: number = 5000;

const server: Server = http.createServer(
  (request: IncomingMessage, response: ServerResponse) => {
    response.statusCode = 200;
    response.setHeader("Content-Type", "text/html");
    response.write("<html><body><h1>Hello, World!</h1></body></html>");
    response.end();
  }
);

server.listen(port, hostname, () => {
  console.log(`Node JS Server at http://${hostname}:${port}`);
});

실행 결과


실제 위에 코드를 기반으로 서버를 실행한 결과이고 도메인 주소로 들어가면 Hello World라는 텍스트를 확인할 수 있다.

저의 경우에는 api 요청 테스트를 쉽게 할 수 있는 insomnia를 사용하여 확인했습니다.

profile
포기란 없습니다.

0개의 댓글