Node.js와 MongoDB를 활용하여 간단한 API 서버를 구축하는 과정은 현대 웹 개발에서 매우 중요합니다. 두 가지 기술은 빠르고 효율적인 웹 애플리케이션 개발을 가능하게 해줍니다. 본 포스팅에서는 이 두 가지 기술을 조합하여 RESTful API를 구축하는 방법을 자세히 살펴보도록 하겠습니다.
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를 통한 사용자 인증 모두가 성공적인 애플리케이션 개발에 기여합니다. 이와 같은 기초 지식을 잘 활용하여 더 복잡한 비즈니스 로직과 다양한 기능을 추가해 나가시기 바랍니다.
자주 물으시는 질문
Node.js와 MongoDB를 함께 사용하는 이유는 무엇인가요?
Node.js는 비동기식 처리로 높은 성능을 제공하며, MongoDB는 유연한 데이터 구조를 지원합니다. 이 둘의 조합은 빠른 웹 애플리케이션 개발을 가능하게 합니다.
API 서버를 설정하는 과정은 어떻게 되나요?
API 서버를 구축하려면 먼저 Node.js와 MongoDB를 설치하고, Express.js 프레임워크를 이용해 기본적인 라우팅 및 서버 환경을 설정해야 합니다.
JWT는 어떻게 사용할 수 있나요?
사용자 인증을 위해 JWT를 생성한 후, 클라이언트에 전달하여 이후의 요청에 포함시켜 서버에서 인증할 수 있도록 활용합니다. 이 방법은 안전하고 효율적인 인증 방식입니다.
댓글