현대 웹 개발에서 Node.js와 MongoDB의 조합은 매우 중요한 역할을 하고 있습니다. 두 가지 기술을 활용하면 빠르고 효율적인 웹 애플리케이션 구축이 가능해지며, RESTful API를 생성하는 과정은 개발자들에게 필수적인 스킬로 자리 잡고 있습니다. 이번 글에서는 Node.js API 서버를 구축하고 MongoDB를 연동하는 과정을 단계별로 알아보겠습니다.

Node.js와 MongoDB란?
Node.js는 서버 사이드에서 자바스크립트를 실행할 수 있도록 해주는 오픈 소스 런타임 환경입니다. 비동기식 이벤트 기반으로 작동하여 고속의 성능을 발휘하는 것이 특징입니다. 반면에 MongoDB는 JSON 스타일의 문서 기반 데이터베이스로, 유연한 데이터 구조를 지원하며 뛰어난 확장성을 보장합니다. 이러한 두 기술의 결합은 데이터의 효율적인 처리 및 관리에 기여합니다.
API 서버 환경 설정하기
프로젝트를 시작하기 위해서는 먼저 개발 환경을 설정해야 합니다. Node.js와 MongoDB가 설치되었다면, 새로운 프로젝트 디렉토리를 생성해야 합니다. 이 후 초기 설정을 진행합니다.
환경 설정
- 프로젝트 디렉토리 생성
- npm init 명령어를 사용하여 package.json 파일 생성
이 파일은 프로젝트에 대한 메타데이터를 담고 있으며, 필요한 패키지를 관리하는 역할을 수행합니다.
Express.js 설치
Express.js는 Node.js를 위한 웹 프레임워크로, RESTful API 구축에 자주 사용됩니다. 다음 명령어로 Express.js를 설치할 수 있습니다.
npm install express --save
Express 서버 구성하기
기본 서버를 설정하기 위해 app.js 파일을 생성한 후 아래와 같은 코드를 작성하여 Express 서버 설정을 완료합니다.
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => res.send('Hello World!'));
app.listen(port, () => console.log(서버가 ${port} 포트에서 작동 중입니다.));
API 라우팅
RESTful API는 자원의 URL을 통해 표현되며, HTTP 메소드를 활용하여 클라이언트와 서버 간의 상호작용을 정의합니다. Express.js에서는 다양한 방법으로 API 라우팅을 설정할 수 있습니다.
app.get('/users', (req, res) => {
// 사용자 목록 조회 로직
});
app.post('/users', (req, res) => {
// 새로운 사용자 생성 로직
});
MongoDB와의 연동
MongoDB는 데이터 저장소로서 우수한 성능을 보입니다. Node.js와 연결하기 위해 Mongoose라는 ODM(Object Data Modeling) 라이브러리를 사용합니다. Mongoose를 통해 MongoDB와의 연결 및 데이터 모델 구성을 손쉽게 진행할 수 있습니다.
Mongoose 설치
Mongoose를 설치하기 위해 아래 명령어를 사용합니다.
npm install mongoose --save

MongoDB 연결
MongoDB에 연결하기 위한 코드를 app.js 파일에 추가합니다.
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mydatabase', {
useNewUrlParser: true,
useUnifiedTopology: true
}).then(() => console.log('MongoDB에 성공적으로 연결되었습니다.'))
.catch(err => console.error('MongoDB 연결 실패:', err));
모델 정의 및 사용하기
MongoDB에 저장할 데이터의 구조를 정의하기 위해 Mongoose 스키마를 작성합니다. 다음과 같이 사용자 모델을 정의할 수 있습니다.
const userSchema = new mongoose.Schema({
name: String,
age: Number,
email: String
});
const User = mongoose.model('User', userSchema);
이제 정의한 모델을 사용하여 CRUD 작업을 수행할 수 있습니다. 예를 들어, 새로운 사용자를 생성하고 저장하는 코드는 다음과 같습니다.
const newUser = new User({
name: '홍길동',
age: 30,
email: 'hong@example.com'
});
newUser.save().then(doc => console.log('새 사용자 저장 완료:', doc))
.catch(err => console.error('사용자 저장 실패:', err));
JWT를 활용한 사용자 인증
웹 애플리케이션에서 사용자 인증과 권한 부여는 매우 필수적인 부분입니다. JWT(JSON Web Token)는 로그인이 완료된 후 생성되며, 이후 요청할 때 이 토큰의 유효성을 확인하여 인증을 수행하는 방식입니다.
JWT 라이브러리 설치
JWT를 사용하기 위해 jsonwebtoken 패키지를 설치합니다.
npm install jsonwebtoken --save
JWT 사용하기
사용자를 로그인시키고 JWT를 생성하는 예제 코드는 아래와 같습니다.
const jwt = require('jsonwebtoken');
const token = jwt.sign({ id: user.id }, 'secretKey', { expiresIn: '1h' });
이렇게 생성된 토큰은 클라이언트에 저장되어 이후 서버에 요청할 때마다 함께 전달됩니다.
API 테스트하기
Postman과 같은 도구를 활용하여 API의 동작 여부를 검증할 수 있습니다. 예를 들어, 사용자 목록을 조회하거나 새로운 사용자를 추가하는 요청을 보내 API의 기능을 확인할 수 있습니다.

결론
Node.js와 MongoDB를 이용한 API 서버 구축은 현대적인 웹 서비스 개발에 있어 매우 중요한 과정입니다. HTTP 메소드를 활용한 RESTful API 설계, NoSQL 데이터베이스와의 통합, JWT를 통한 사용자 인증 등은 모든 개발자들이 반드시 숙지해야 하는 내용입니다. 이러한 기초 지식을 활용하여 보다 복잡한 비즈니스 로직과 다양한 기능을 추가해 나가시기 바랍니다.
자주 찾는 질문 Q&A
Node.js와 MongoDB를 함께 사용하는 이유는 무엇인가요?
Node.js와 MongoDB의 조합은 빠른 데이터 처리와 웹 애플리케이션의 성능을 극대화합니다. 비동기적인 작업 처리 덕분에 효율적으로 실시간 데이터를 다룰 수 있습니다.
Express.js는 어떤 용도로 사용되나요?
Express.js는 Node.js 기반의 웹 프레임워크로, RESTful API를 설계하는 데에 적합하고 유연한 라우팅 기능을 제공합니다. 이를 통해 서버사이드 처리를 더 간편하게 할 수 있습니다.
JWT는 무엇이며, 어떤 장점이 있나요?
JWT, 즉 JSON Web Token은 사용자의 인증 정보를 안전하게 전달하기 위한 방법입니다. 이 토큰은 서버와 클라이언트 간의 신뢰성을 높이며, Stateless한 인증을 가능하게 합니다.