본문 바로가기
Nodejs

[Nodejs]http 모듈 활용해 서버 만들기

by teamnova 2024. 12. 17.
728x90

오늘은 http 모듈을 활용해 간단한 웹 서버를 만들어보겠습니다.

 

http모듈은 http 웹 서버 구축 및 클라이언트 기능을 제공하는 모듈입니다.

 

 

1.프로젝트 생성 및 초기

mkdir 생성할 폴더명
cd 방금 생성한 폴더명
npm init -y

=> 원하는 경로에 폴더를 생성하고 해당 폴더로 이동 후 프로젝트 생성 및 초기화 시켜줍니다.

 

 

 

2.http모듈 활용할 js파일, html파일 담아둘 폴더, html파일 생성

mkdir html 파일 담아둘 폴더명
touch html 파일명
touch js 파일명

=> 프로젝트 폴더 내에서 js 파일을 생성합니다.

=> html 파일 담아둘 폴더 내에 html 파일을 생성합니다.

 

저는 위 이미지와 같이 생성하였습니다.

 

 

 

 

3.http 모듈 활용할 js파일 코드 작성

// http 모듈 import
const http = require('node:http');
// fs 모듈 import
const fs = require('node:fs');
//path 모듈 import
const path = require('node:path');
// 사용할 포트 값 설정
const PORT = 3000;

// 서버 생성
const server = http.createServer((req, res) => {
    console.log(`${req.method} ${req.url}`); // 요청 메서드와 URL 로그 출력

    // 라우팅 처리
    if (req.url === '/' && req.method === 'GET') {
        // get 요청으로 루트 경로로 요청시 응답 처리

        //html 파일 경로 문자열 생성
        const filePath = path.join(__dirname, 'html 파일 담아 둔 폴더명(경로적기x)', '만들어둔 html파일명(경로적기x)');

        //html 파일 정보 읽기
        fs.readFile(filePath, 'utf8', (err, data) => {
            if (err) {
                console.error('파일 읽기 에러:', err);
                res.writeHead(500, { 'Content-Type': 'text/plain' });
                res.end('서버 에러');
                return;
            }

            // 성공적으로 html 파일을 읽었을 때
            res.writeHead(200, { 'Content-Type': 'text/html' });
            res.end(data);
        });
    } else {
        // 다른 모든 요청에 대한 404 응답
        res.writeHead(404, { 'Content-Type': 'text/plain' });
        res.end('404 Not Found');
    }
});


// 서버 시작
server.listen(PORT, () => {
    console.log(`${PORT} 포트로 서버가 실행 중입니다.`);
});

 

 

4.html파일 코드 작성

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>예시</title>
</head>

<body>
    <h1>예시로 만든 페이지입니다</h1>
    <p>http 모듈로 만든 서버에서 응답해주었습니다</p>
</body>

</html>

 

 

 

5.서버 실행

node http모듈활용한js파일명

 

 

 

 

실행 결과

 

요청에 성공적으로 응답하여  http 모듈로 만든 서버가 정상적으로 동작하고 있는 것을 확인할 수 있습니다.