티스토리 뷰
Node.js로 웹 서버 구현하는 방법
Node.js는 자바스크립트 기반의 런타임 환경으로, 서버 측 애플리케이션 개발에 널리 사용됩니다. 이 글에서는 Node.js를 이용해 간단한 웹 서버를 구현하는 방법을 단계별로 설명합니다. 또한, Express 프레임워크를 활용해 더 효율적인 서버 구축 방법도 다룹니다.
👇👇👇 내용 자세히보기 👇👇👇
Node.js란 무엇인가?
Node.js는 V8 자바스크립트 엔진을 기반으로 동작하며, 비동기 이벤트 기반 구조를 통해 고성능 네트워크 애플리케이션을 개발할 수 있습니다. 특히, 다음과 같은 특징을 가지고 있습니다:
- 비동기 I/O 처리: 높은 처리량과 확장성을 제공합니다.
- 단일 스레드 이벤트 루프: 메모리 사용량이 적고, 실시간 애플리케이션에 적합합니다.
- JavaScript 사용: 프론트엔드와 백엔드 모두 동일한 언어로 개발 가능.
기본 HTTP 웹 서버 구축
Node.js의 내장 모듈인 http
를 사용하여 간단한 HTTP 웹 서버를 구축할 수 있습니다.
1. 프로젝트 디렉토리 생성
먼저, 프로젝트 디렉토리를 생성하고 Node.js 환경을 초기화합니다:
mkdir node_server
cd node_server
npm init -y
2. HTTP 모듈로 서버 생성
다음은 기본적인 HTTP 서버를 생성하는 코드입니다:
const http = require('http'); // http 모듈 불러오기
const PORT = 3000; // 사용할 포트 번호
// 서버 생성
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' }); // 상태 코드와 헤더 설정
res.end('Hello, Node.js!'); // 응답 본문 전송 및 종료
});
// 서버 실행
server.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
3. 실행 및 확인
위 코드를 server.js
파일에 저장한 후, 다음 명령어로 실행합니다:
node server.js
브라우저에서 http://localhost:3000
에 접속하면 "Hello, Node.js!"라는 메시지가 출력됩니다.
Express를 활용한 웹 서버 구축
Express는 Node.js의 대표적인 웹 프레임워크로, 간단하고 효율적으로 웹 애플리케이션을 개발할 수 있도록 도와줍니다.
1. Express 설치
Express를 설치하려면 아래 명령어를 실행하세요:
npm install express --save
2. Express로 기본 서버 작성
다음은 Express를 사용하여 간단한 웹 서버를 구현한 예제입니다:
const express = require('express'); // Express 모듈 불러오기
const app = express(); // 애플리케이션 생성
const PORT = 3000;
// 라우팅 설정
app.get('/', (req, res) => {
res.send('<h1>Hello, Express!</h1>');
});
// 서버 실행
app.listen(PORT, () => {
console.log(`Express server is running on http://localhost:${PORT}`);
});
3. 정적 파일 제공
Express를 이용하면 정적 파일을 쉽게 제공할 수 있습니다. 예를 들어, public
폴더에 HTML 파일을 넣고 다음과 같이 설정합니다:
app.use(express.static('public'));
이제 브라우저에서 /파일명
으로 정적 파일에 접근할 수 있습니다.
추가 기능: POST 요청 처리
Node.js는 클라이언트 요청 데이터를 처리하기 위해 req
객체를 활용합니다. 아래는 POST 요청 데이터를 처리하는 예제입니다:
const bodyParser = require('body-parser');
app.use(bodyParser.json()); // JSON 파싱 미들웨어 추가
app.post('/data', (req, res) => {
console.log(req.body); // 클라이언트가 보낸 데이터 출력
res.send('Data received!');
});
고급 기능: 미들웨어와 라우팅
Express에서는 미들웨어와 라우터를 활용해 복잡한 애플리케이션 구조를 설계할 수 있습니다.
미들웨어 추가
미들웨어는 요청과 응답 사이에서 특정 작업을 수행합니다:
app.use((req, res, next) => {
console.log(`Request URL: ${req.url}`);
next(); // 다음 미들웨어로 전달
});
라우팅 분리
라우팅을 별도의 파일로 분리하여 관리할 수 있습니다:
// routes/home.js
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('Welcome to the Home Page!');
});
module.exports = router;
// app.js에서 라우터 연결
const homeRouter = require('./routes/home');
app.use('/', homeRouter);
결론
Node.js는 경량화된 구조와 빠른 속도로 인해 현대 웹 개발에서 중요한 역할을 하고 있습니다. 특히 Express와 같은 프레임워크를 활용하면 더욱 효율적으로 애플리케이션을 개발할 수 있습니다. 위에서 설명한 내용을 바탕으로 자신만의 웹 서버를 만들어 보세요.
자주 묻는 질문 (FAQ)
Q1: Node.js와 Express의 차이점은 무엇인가요?
A1: Node.js는 자바스크립트 런타임 환경이고, Express는 Node.js 위에서 동작하는 웹 프레임워크입니다. Express는 라우팅 및 미들웨어 기능 등을 제공해 더 쉽게 서버를 구축할 수 있도록 돕습니다.
Q2: HTTP 상태 코드란 무엇인가요?
A2: HTTP 상태 코드는 클라이언트 요청에 대한 서버의 응답 상태를 나타냅니다. 예를 들어, 200
은 성공을 의미하고, 404
는 요청한 리소스를 찾을 수 없음을 나타냅니다.
Q3: Node.js에서 비동기 처리는 어떻게 이루어지나요?
A3: Node.js는 이벤트 루프와 콜백 함수를 통해 비동기 처리를 수행합니다. 이를 통해 높은 동시성을 유지하면서도 성능 저하 없이 작업을 처리할 수 있습니다.