프로그래밍/Node.js

[Node.js 강의 시리즈] 7강 - HTTP 모듈

월횽 2024. 7. 2. 06:30
728x90
반응형
SMALL

Node.js의 HTTP 모듈을 사용하여 HTTP 서버를 생성하고, 클라이언트 요청에 응답하며, 기본적인 라우팅을 처리하는 방법을 학습한다.

 

 

 

 

 

1. HTTP 서버 생성 및 응답

 

HTTP 모듈 소개

· Node.js의 http 모듈은 HTTP 서버와 클라이언트 기능을 제공한다.
· 이를 사용하여 웹 서버를 쉽게 구축할 수 있다.

728x90

HTTP 서버 생성

· http 모듈의 createServer 메서드를 사용하여 서버를 생성할 수 있다.
· 서버는 클라이언트의 요청을 받아 응답을 반환한다.

 

예제: 간단한 HTTP 서버 생성

const http = require('http');

// 서버 생성
const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello, World!\n');
});

// 서버 실행
const PORT = 3000;
server.listen(PORT, () => {
  console.log(`Server running at http://localhost:${PORT}/`);
});

 

 

서버 실행 방법

· 위 코드를 server.js 파일로 저장한 후, 터미널에서 다음 명령어를 실행하여 서버를 시작할 수 있다.

node server.js

 

 

 

 

2. 기본적인 라우팅 처리

라우팅이란?

· 라우팅은 클라이언트의 요청 URL에 따라 다른 응답을 제공하는 기능을 의미한다.
· 서버는 다양한 경로(path)에 대해 다른 처리를 수행할 수 있다.

 

예제: 기본적인 라우팅 처리

const http = require('http');

const server = http.createServer((req, res) => {
  // 요청 URL에 따른 분기 처리
  if (req.url === '/') {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Welcome to the Home Page!\n');
  } else if (req.url === '/about') {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Welcome to the About Page!\n');
  } else {
    res.statusCode = 404;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Page Not Found\n');
  }
});

const PORT = 3000;
server.listen(PORT, () => {
  console.log(`Server running at http://localhost:${PORT}/`);
});

 

 

라우팅 예제 설명

· 서버는 클라이언트 요청의 URL을 req.url 속성을 통해 확인할 수 있다.
· 예제에서는 /, /about 경로에 대해 각각 다른 응답을 제공하고, 그 외의 경로에 대해 404 응답을 반환한다.

 

실습: HTTP 서버와 라우팅 구현하기

1. HTTP 서버 생성
· http 모듈을 사용하여 기본 HTTP 서버를 생성하고, 클라이언트의 요청에 "Hello, World!" 메시지를 반환하세요.

반응형

2. 기본적인 라우팅 처리
· 서버를 수정하여 /, /about, /contact 경로에 대해 각각 다른 메시지를 반환하도록 구현하세요.
· 존재하지 않는 경로에 대해 404 응답을 반환하도록 처리하세요.

 

예제: 라우팅 처리 추가

const http = require('http');

const server = http.createServer((req, res) => {
  if (req.url === '/') {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Welcome to the Home Page!\n');
  } else if (req.url === '/about') {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Welcome to the About Page!\n');
  } else if (req.url === '/contact') {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Welcome to the Contact Page!\n');
  } else {
    res.statusCode = 404;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Page Not Found\n');
  }
});

const PORT = 3000;
server.listen(PORT, () => {
  console.log(`Server running at http://localhost:${PORT}/`);
});

 

 

 

- 이전 수업 목록

 

 

 

 

 

728x90
반응형
LIST