안녕하세요! 오늘은 백엔드 개발의 중요한 개념 중 하나인 REST API를 활용하여 간단한 도서 관리 미니 프로젝트를 만들어보겠습니다. 이 프로젝트를 통해 RESTful 서비스의 기본적인 작동 방식을 이해하고, 실제로 API를 구현해보는 경험을 쌓을 수 있습니다.

프로젝트 개요

이번 프로젝트는 도서 정보를 CRUD(Create, Read, Update, Delete) 방식으로 관리할 수 있는 간단한 REST API를 개발하는 것입니다. 우리는 Node.js와 Express 프레임워크를 사용하여 서버를 구축하고, MongoDB를 이용하여 데이터베이스를 관리할 것입니다.

환경 설정

먼저, 프로젝트를 위해 필요한 개발 환경을 설정해보겠습니다.

  1. Node.js 설치: Node.js 공식 웹사이트에서 설치합니다.
  2. MongoDB 설치: MongoDB 공식 웹사이트에서 설치하거나, MongoDB Atlas를 이용하여 클라우드에서 데이터베이스를 생성합니다.
  3. 새 프로젝트 생성: 터미널에서 다음 명령어를 사용하여 프로젝트 폴더를 생성하고 초기화합니다.
  4. mkdir book-management
    cd book-management
    npm init -y
  5. 필요한 패키지 설치:
  6. npm install express mongoose body-parser

    서버 구현

    이제 기본적인 Express 서버를 설정해보겠습니다. server.js 파일을 생성하고 다음 코드를 입력합니다.

    const express = require('express');
    const mongoose = require('mongoose');
    const bodyParser = require('body-parser');
    
    const app = express();
    const PORT = process.env.PORT || 5000;
    
    // MongoDB 연결
    mongoose.connect('mongodb://localhost:27017/bookDB', { useNewUrlParser: true, useUnifiedTopology: true });
    
    app.use(bodyParser.json());
    
    // 도서 스키마 정의
    const bookSchema = new mongoose.Schema({
        title: String,
        author: String,
        publishedDate: Date
    });
    
    const Book = mongoose.model('Book', bookSchema);
    
    // CRUD API 구현
    
    // 도서 추가
    app.post('/books', async (req, res) => {
        const newBook = new Book(req.body);
        await newBook.save();
        res.status(201).send(newBook);
    });
    
    // 도서 목록 조회
    app.get('/books', async (req, res) => {
        const books = await Book.find();
        res.status(200).send(books);
    });
    
    // 도서 수정
    app.put('/books/:id', async (req, res) => {
        const updatedBook = await Book.findByIdAndUpdate(req.params.id, req.body, { new: true });
        res.status(200).send(updatedBook);
    });
    
    // 도서 삭제
    app.delete('/books/:id', async (req, res) => {
        await Book.findByIdAndDelete(req.params.id);
        res.status(204).send();
    });
    
    // 서버 시작
    app.listen(PORT, () => {
        console.log(서버가 http://localhost:${PORT}에서 실행 중입니다.);
    });

    API 테스트

    이제 API를 테스트해볼 차례입니다. Postman과 같은 API 테스트 도구를 사용할 수 있습니다. 각 메소드에 대한 요청을 보내어 기능을 확인해보세요.

  7. 도서 추가: POST 요청을 /books 엔드포인트에 보내고, JSON 형식으로 도서 정보를 포함합니다.
  8. {
        "title": "JavaScript: The Good Parts",
        "author": "Douglas Crockford",
        "publishedDate": "2008-05-15"
    }
  9. 도서 목록 조회: GET 요청을 /books 엔드포인트에 보내면 등록된 도서 목록을 확인할 수 있습니다.
  10. 도서 수정: PUT 요청을 /books/:id 엔드포인트에 보내고, 수정할 도서의 ID와 함께 변경할 정보를 JSON 형식으로 포함합니다.
  11. 도서 삭제: DELETE 요청을 /books/:id 엔드포인트에 보내면 해당 도서를 삭제할 수 있습니다.

마무리

여기까지 REST API 기반의 간단한 도서 관리 미니 프로젝트를 구현해보았습니다. 이 프로젝트를 통해 RESTful API의 기본적인 구조와 동작 방식을 이해하고, Express 및 MongoDB를 활용하는 방법에 대해 배울 수 있었습니다. 실제 프로젝트에는 인증, 에러 처리, 데이터 유효성 검사 등의 추가적인 요소들이 필요하지만, 이 튜토리얼을 통해 기본적인 CRUD 작업을 구현하는 데 도움을 받으셨길 바랍니다. 앞으로 더 복잡한 기능을 추가하거나 다른 기술 스택을 활용한 프로젝트에도 도전해보세요!