본문 바로가기
카테고리 없음

Node.js로 웹 서버 만들기(설치부터 Express 활용까지)

by 불멸도도 2024. 8. 14.

Node.js란 무엇인가?

Node.js는 서버 측에서 자바스크립트를 실행할 수 있도록 해주는 오픈 소스 런타임 환경입니다. 2009년에 라이언 달(Ryan Dahl)에 의해 개발되었으며, 비동기 이벤트 기반의 아키텍처를 통해 높은 확장성과 빠른 응답 속도를 제공합니다. 웹 서버, API, 마이크로서비스 등 다양한 서버 애플리케이션을 구축할 수 있는 강력한 도구입니다.

Node.js 설치 방법

Node.js 다운로드

Node.js를 설치하기 위해서는 먼저 공식 웹사이트에서 설치 파일을 다운로드해야 합니다. 다음 링크에서 최신 버전을 받을 수 있습니다:

반응형

Node.js 설치 방법

Node.js 설치는 매우 간단합니다. 다운로드한 설치 파일을 실행하고, 설치 마법사의 지시에 따라 진행하면 됩니다. 대부분의 경우 추가 설정 없이 기본 설치 경로를 그대로 사용해도 문제없습니다.

Node.js 설치 후 설정

Node.js를 설치한 후에는 추가 설정이 필요하지 않습니다. 기본 설치 경로는 C:\Program Files\nodejs이며, 설치가 완료되면 다음과 같은 파일들이 포함되어 있습니다:

  • node.exe: 자바스크립트 실행 엔진
  • npm: Node.js 패키지를 관리하기 위한 명령행 프로그램
  • node_modules: Node.js 확장 패키지 설치 경로

Node.js가 올바르게 설치되었는지 확인하려면 명령 프롬프트나 터미널에서 다음 명령을 실행하여 버전 정보를 확인할 수 있습니다:

node -v
npm -v
반응형

웹 서버 만들기

간단한 웹 서버 만들기

Node.js를 사용하면 간단한 웹 서버를 빠르게 구축할 수 있습니다. 아래의 예제 코드는 기본적인 HTTP 서버를 생성하여 "Hello World" 메시지를 반환합니다.

var http = require('http');
var server = http.createServer(function (req, res) {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello World');
});
server.listen(8000);

위 소스를 app.js로 저장한 후, 명령 창에서 다음과 같이 실행합니다:

node app.js

이제 웹 브라우저를 열고 http://127.0.0.1:8000을 입력하면, "Hello World" 메시지가 화면에 나타나는 것을 확인할 수 있습니다. 이는 웹 서버가 정상적으로 실행되고 있음을 의미합니다.

반응형

Express 패키지를 이용한 웹 서버 만들기

Express란?

Express는 Node.js에서 가장 널리 사용되는 웹 프레임워크로, 다양한 템플릿 엔진과 미들웨어를 활용하여 웹 애플리케이션을 쉽게 구축할 수 있도록 도와줍니다. Express는 라우팅, 미들웨어 관리, 템플릿 렌더링 등의 기능을 제공하며, 빠르고 유연한 웹 서버 개발을 가능하게 합니다.

Express 설치 방법

Express를 사용하기 위해서는 먼저 npm을 이용하여 Express 패키지를 설치해야 합니다. Express 패키지를 설치하려면 다음 명령을 입력합니다:

npm install express

이 명령은 현재 작업 디렉토리에 node_modules 폴더를 생성하고, 그 안에 Express 패키지를 설치합니다. 웹 애플리케이션 프로젝트의 루트 디렉토리에서 실행하는 것이 좋습니다.

반응형

Express를 사용한 웹 서버 예제

이제 Express를 사용하여 간단한 웹 서버를 만들어보겠습니다. 아래의 코드는 HTTP 서버를 생성하고, 두 개의 라우트를 정의하여 각각 "Hello /"와 "Hello World" 메시지를 반환합니다.

var express = require('express')
  , http = require('http')
  , app = express()
  , server = http.createServer(app);

app.get('/', function (req, res) {
  res.send('Hello /');
});

app.get('/world.html', function (req, res) {
  res.send('Hello World');
});

server.listen(8000, function() {
  console.log('Express server listening on port ' + server.address().port);
});
반응형

위 소스를 express.js로 저장한 후, 다음 명령으로 실행합니다:

node express.js

이제 http://127.0.0.1:8000에 접속하면 "Hello /" 메시지가 나타나며, http://127.0.0.1:8000/world.html에서는 "Hello World" 메시지가 나타납니다. 이처럼 Express를 사용하면 더 구조적이고 확장성 있는 웹 서버를 쉽게 구축할 수 있습니다.

Express 미들웨어 활용

Express의 강력한 기능 중 하나는 미들웨어입니다. 미들웨어는 요청이 처리되는 동안 특정 작업을 수행할 수 있는 함수로, 로깅, 인증, 데이터 파싱 등을 처리하는 데 유용합니다. 예를 들어, 요청을 로깅하는 미들웨어를 추가하려면 다음과 같이 작성할 수 있습니다:

반응형
app.use(function(req, res, next) {
  console.log('Request URL:', req.originalUrl);
  next();
});

이 코드는 모든 요청에 대해 URL을 로그에 기록한 후, 다음 미들웨어나 라우트 핸들러로 넘어가도록 합니다.

Node.js와 Express로 확장성 있는 웹 애플리케이션 구축하기

라우팅과 템플릿 엔진 사용하기

Express에서는 라우팅과 템플릿 엔진을 쉽게 사용할 수 있습니다. 라우팅은 특정 URL에 대한 요청을 처리하는 방법을 정의하며, 템플릿 엔진은 동적 HTML을 생성하는 데 사용됩니다. 예를 들어, Pug라는 템플릿 엔진을 사용하여 뷰를 렌더링할 수 있습니다.

먼저 Pug를 설치합니다:

npm install pug

이제 Pug를 사용하여 간단한 라우트를 작성해보겠습니다.

반응형
app.set('view engine', 'pug');

app.get('/hello', function (req, res) {
  res.render('hello', { title: 'Hello', message: 'Hello World with Pug!' });
});

views 폴더에 hello.pug 파일을 생성하고, 다음과 같이 작성합니다:

doctype html
html
  head
    title= title
  body
    h1= message

이제 http://127.0.0.1:8000/hello에 접속하면, Pug 템플릿 엔진을 통해 생성된 "Hello World with Pug!" 메시지를 볼 수 있습니다.

반응형

데이터베이스와의 연동

Node.js와 Express를 사용하여 데이터베이스와 연동하는 것도 매우 쉽습니다. MySQL, MongoDB, PostgreSQL 등 다양한 데이터베이스와 연동할 수 있으며, 각 데이터베이스에 맞는 패키지를 설치하여 사용합니다. 예를 들어, MySQL과 연동하려면 다음과 같이 mysql 패키지를 설치합니다:

npm install mysql

이제 MySQL 데이터베이스와 연결하여 데이터를 조회하는 예제를 작성해보겠습니다.

반응형
var mysql = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '',
  database : 'test'
});

connection.connect();

app.get('/users', function (req, res) {
  connection.query('SELECT * FROM users', function (error, results, fields) {
    if (error) throw error;
    res.send(results);
  });
});
반응형

이 코드는 users 테이블에서 데이터를 조회하여 클라이언트에게 반환합니다. http://127.0.0.1:8000/users에 접속하면, JSON 형식으로 데이터베이스의 내용이 출력됩니다.

Node.js와 Express로 API 서버 만들기

Node.js와 Express는 RESTful API 서버를 구축하는 데도 많이 사용됩니다. REST API는 웹 서비스 간에 데이터를 주고받기 위한 표준 아키텍처 스타일로, 클라이언트와 서버 간의 통신을 쉽게 구현할 수 있습니다.

다음은 간단한 REST API 서버를 만드는 예제입니다.

반응형
app.get('/api/users', function(req, res) {
  // 모든 사용자 조회
  res.json(users);
});

app.post('/api/users', function(req, res) {
  // 새로운 사용자 추가
  var newUser = req.body;
  users.push(newUser);
  res.status(201).json(newUser);
});

app.put('/api/users/:id', function(req, res) {
  // 특정 사용자 업데이트
  var id = req.params.id;
  var updatedUser = req.body;
  users[id] = updatedUser;
  res.json(updatedUser);
});

app.delete('/api/users/:id', function(req, res) {
  // 특정 사용자 삭제
  var id = req.params.id;
  users.splice(id, 1);
  res.status(204).end();
});
반응형

이 코드는 간단한 사용자 CRUD(Create, Read, Update, Delete) API를 구현한 것으로, /api/users 경로를 통해 데이터를 주고받을 수 있습니다.

Node.js의 확장성과 커뮤니티

Node.js는 매우 확장성이 뛰어난 플랫폼으로, 대규모 애플리케이션 개발에 적합합니다. 또한 활발한 오픈 소스 커뮤니티를 통해 다양한 라이브러리와 프레임워크를 제공받을 수 있으며, 지속적인 업데이트와 성능 개선이 이루어지고 있습니다.

Node.js를 사용하면 비동기 프로그래밍의 강력함을 활용하여 고성능, 저지연의 애플리케이션을 개발할 수 있습니다. 특히 실시간 애플리케이션, 마이크로서비스, API 서버 등 다양한 분야에서 활용되고 있으며, JavaScript를 서버 측에서도 사용함으로써 전체 애플리케이션 스택에서 일관된 언어를 사용할 수 있는 장점이 있습니다.

반응형