프로그래머스 데브코스TIL북 스토어 프로젝트

[week6] 프로젝트 : Node.js 기반의 Rest API 구현 (4)

이규현2026-02-11
[week6] 프로젝트 : Node.js 기반의 Rest API 구현 (4)

프로젝트 세팅 + app.js 구현

👉🏻 API 설계 확인하기

👉🏻 DB 설계 확인하기

👉🏻 github 레포지토리 확인하기

1. 프로젝트 폴더 생성

book-store 이름으로 프로젝트를 생성하겠습니다.

2. 패키지 설치 및 설정

npm install express express-validator dotenv jsonwebtoken mysql2 nodemon

개발 효율성을 위해 nodemon 라이브러리를 설치하였습니다.

.gitignore

github에 올라갈때 올라가지 말아야할 파일 및 폴더를 설정해주었습니다.

node_modules
.env

3. 모듈화

API 설계를 바탕으로 우선 간단하게 모듈화부터 해보겠습니다.

4-1. users.js

import express from 'express';

const router = express.Router();

router
  .post('/join', (req, res) => {
    res.json('회원가입');
  })

  .post('/login', (req, res) => {
    res.json('로그인');
  })

  .post('/reset', (req, res) => {
    res.json('비밀번호 초기화 요청');
  })

  .put('/reset', (req, res) => {
    res.json('비밀번호 초기화');
  });

export default router;

4-2. books.js

import express from "express";

const router = express.Router();

router
  .get("/", (req, res) => {
    res.json("전체 도서 조회");
  })

  .get("/:id", (req, res) => {
    res.json("개별 도서 조회");
  });

  .get("/", (req, res) => {
    req.query.category_id;
    res.json("카테고리별 도서 목록 조회");
  });

export default router;

4-3. likes.js

import express from 'express';

const router = express.Router();

router
  .post('/:id', (req, res) => {
    res.json('좋아요 추가');
  })

  .delete('/:id', (req, res) => {
    res.json('좋아요 삭제');
  });

export default router;

4-4. carts.js

import express from 'express';

const router = express.Router();

router
  .post('/', (req, res) => {
    res.json('장바구니 담기');
  })
  .get('/', (req, res) => {
    res.json('장바구니 조회');
  })

  .delete('/:id', (req, res) => {
    res.json('장바구니 도서 삭제');
  });
/*
  .get("/", (req, res) => {
    res.json("장바구니에서 선택한 주문 예상 상품 목록 조회");
  });
*/
export default router;

4-5. orders.js

import express from 'express';

const router = express.Router();

router
  .post('/', (req, res) => {
    res.json('주문하기');
  })
  .get('/', (req, res) => {
    res.json('주문 목록 조회');
  })
  .get('/:id', (req, res) => {
    res.json('주문 상세 상품 조회');
  });

export default router;

5. app.js 구현

라우터 모듈을 불러오고 미들웨어 등록을 하였습니다.

import express from 'express';
import dotenv from 'dotenv';

import userRouter from './routes/users.js';
import bookRouter from './routes/books.js';
import likeRouter from './routes/likes.js';
import cartRouter from './routes/carts.js';
import orderRouter from './routes/orders.js';

dotenv.config();

const app = express();
const PORT = process.env.PORT;

app.use(express.json());

app.use('/users', userRouter);
app.use('/books', bookRouter);
app.use('/likes', likeRouter);
app.use('/carts', cartRouter);
app.use('/orders', orderRouter);

app.listen(PORT, () => {
  console.log(`${PORT}번 포트에서 서버가 실행중입니다.`);
});

6. users 테이블 생성하기

-- 유저 테이블 생성--
CREATE TABLE users (
  id INT NOT NULL AUTO_INCREMENT,
  email VARCHAR(100) NOT NULL,
  name VARCHAR(45) NOT NULL,
  password VARCHAR(45) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `email_UNIQUE` (`email` ASC)
);