IT & 웹개발

Express.js를 활용한 REST API 개발

kkwako 2025. 3. 7. 17:35

1. 개요

현대 웹 애플리케이션에서 클라이언트와 서버 간 데이터 교환을 원활하게 하기 위해 REST API가 널리 사용된다. REST(Representational State Transfer) API는 HTTP 프로토콜을 기반으로 하는 아키텍처 스타일로, 클라이언트가 서버의 리소스를 요청하고 조작할 수 있도록 설계된다. Node.js 기반의 Express.js 프레임워크는 이러한 REST API를 쉽고 빠르게 구축할 수 있도록 도와준다.

본 글에서는 Express.js를 활용하여 REST API를 개발하는 과정을 단계별로 설명하며, 기본적인 CRUD(Create, Read, Update, Delete) 기능을 구현하는 방법을 소개하겠다.

 

Express.js를 활용한 REST API 개발

 


2. Express.js란 무엇인가?

1) Express.js의 개요

Express.js는 Node.js 환경에서 동작하는 가벼운 웹 애플리케이션 프레임워크로, 서버 개발을 보다 쉽고 효율적으로 할 수 있도록 다양한 기능을 제공한다. Express.js는 미들웨어를 활용하여 요청과 응답을 처리할 수 있으며, RESTful API 개발에 최적화되어 있다.

2) Express.js의 특징

  • 경량성: 기본적으로 필요한 기능만 제공하며, 추가적인 기능은 미들웨어를 통해 확장할 수 있다.
  • 유연성: 다양한 미들웨어와 조합하여 원하는 기능을 쉽게 구현할 수 있다.
  • 라우팅 시스템: HTTP 메서드(GET, POST, PUT, DELETE)와 URL 패턴을 기반으로 요청을 처리할 수 있다.
  • 미들웨어 지원: 요청과 응답을 가공하거나 보안을 강화할 수 있는 다양한 미들웨어를 지원한다.

3. Express.js 설치 및 프로젝트 설정

1) Node.js 및 Express.js 설치

Express.js를 사용하려면 Node.js가 설치되어 있어야 한다. 설치가 완료된 후, 아래 명령어를 실행하여 Express.js 프로젝트를 설정한다.

mkdir express-rest-api
cd express-rest-api
npm init -y
npm install express

2) 기본 Express.js 서버 설정

server.js 파일을 생성하고, 아래와 같이 기본적인 Express 서버를 설정한다.

const express = require('express');
const app = express();
const port = 3000;

app.use(express.json());

app.get('/', (req, res) => {
    res.send('Express.js 기반 REST API 서버입니다.');
});

app.listen(port, () => {
    console.log(`서버가 http://localhost:${port} 에서 실행 중입니다.`);
});

위 코드를 실행하면 http://localhost:3000에서 서버가 정상적으로 실행되는 것을 확인할 수 있다.


4. REST API의 CRUD 기능 구현

Express.js를 활용하여 기본적인 CRUD 기능을 구현해보자. 예제로 간단한 users 데이터를 관리하는 API를 만들어보겠다.

1) 데이터 저장을 위한 배열 생성

간단한 사용자 정보를 저장하기 위해 배열을 활용한다.

let users = [
    { id: 1, name: '홍길동', age: 25 },
    { id: 2, name: '김철수', age: 30 }
];

2) 사용자 목록 조회 (GET)

사용자 전체 목록을 가져오는 API를 구현한다.

app.get('/users', (req, res) => {
    res.json(users);
});

3) 특정 사용자 조회 (GET)

ID 값을 기반으로 특정 사용자를 조회하는 API를 구현한다.

app.get('/users/:id', (req, res) => {
    const user = users.find(u => u.id === parseInt(req.params.id));
    if (!user) return res.status(404).json({ message: '사용자를 찾을 수 없습니다.' });
    res.json(user);
});

4) 사용자 추가 (POST)

새로운 사용자를 추가하는 API를 구현한다.

app.post('/users', (req, res) => {
    const newUser = {
        id: users.length + 1,
        name: req.body.name,
        age: req.body.age
    };
    users.push(newUser);
    res.status(201).json(newUser);
});

5) 사용자 정보 수정 (PUT)

기존 사용자 정보를 수정하는 API를 구현한다.

app.put('/users/:id', (req, res) => {
    const user = users.find(u => u.id === parseInt(req.params.id));
    if (!user) return res.status(404).json({ message: '사용자를 찾을 수 없습니다.' });

    user.name = req.body.name;
    user.age = req.body.age;
    res.json(user);
});

6) 사용자 삭제 (DELETE)

특정 사용자를 삭제하는 API를 구현한다.

app.delete('/users/:id', (req, res) => {
    users = users.filter(u => u.id !== parseInt(req.params.id));
    res.json({ message: '사용자가 삭제되었습니다.' });
});

5. Postman을 활용한 API 테스트

API가 정상적으로 동작하는지 확인하려면 Postman과 같은 API 테스트 도구를 사용하면 편리하다.

  1. GET /users → 모든 사용자 목록을 조회
  2. GET /users/:id → 특정 사용자 조회
  3. POST /users → 새 사용자 추가 (Body에 JSON 데이터 포함)
  4. PUT /users/:id → 기존 사용자 정보 수정
  5. DELETE /users/:id → 특정 사용자 삭제

각 요청을 실행하면 JSON 형식의 응답을 받을 수 있다.


6. 결론

Express.js는 간단하고 강력한 기능을 제공하여 REST API를 빠르게 개발할 수 있도록 도와준다. 본 글에서는 Express.js를 활용하여 기본적인 CRUD API를 구현하는 방법을 설명하였다.

이제 Express.js의 미들웨어를 활용하여 보안 기능을 추가하거나, MongoDB와 같은 데이터베이스를 연결하여 더 발전된 API를 개발할 수 있다. 지속적인 학습과 실습을 통해 RESTful API 개발 능력을 향상시키자.