<도서 API 구현>
도서 테이블 생성
- 예약어가 있다면 피해서 컬럼 이름 변경 필요

INSERT INTO books (title, img, category_id, form, isbn, summary, detail, author, pages, contents, price, pub_date)
VALUES ("견우와 직녀", 8, 1, "ebook", 8, "오작교!!", "칠월 칠석!!", "김다리", 100, "목차입니다.", 20000, "2024-10-01");
INSERT INTO books (title, img, category_id, form, isbn, summary, detail, author, pages, contents, price, pub_date)
VALUES ("효녀 심청", 12, 0, "종이책", 9, "심청아..", "공양미 삼백석..", "김심청", 100, "목차입니다.", 20000, "2025-10-15");
INSERT INTO books (title, img, category_id, form, isbn, summary, detail, author, pages, contents, price, pub_date)
VALUES ("혹부리 영감", 22, 2, "ebook", 10, "노래 주머니..", "혹 두개 되버림..", "김영감", 100, "목차입니다.", 20000, "2025-10-05");
BookController 분리 - 도서 전체 조회, 상세 도서 조회
- BokkController 분리하여 도서 전체 조회, 도서 상세 조회 콜백 로직을 작성한다.
- 카테고리별 도서 목록 조회는 도서 전체 조회에서 query에서 받아온 category_id 유무에 따라 분기 처리
- 카테고리별 도서 목록 조회와 도서 전체 조회의 URL path가 '/'로 같기 때문
const conn = require('../mariadb') // db 모듈 가져오기
const {StatusCodes} = require('http-status-codes'); // status code 모듈
const allBooks = (req, res)=>{
// req.query.categryId
let {category_id} = req.query;
if(category_id){
// 카테고리별 도서 목록 조회
let sql = `SELECT * FROM books WHERE category_id = ?`;
// SELECT 쿼리문
conn.query(sql, category_id,
(err, results) => {
if(err){
console.log(err)
return res.status(StatusCodes.BAD_REQUEST).end()
}
if(results.length > 0)
return res.status(StatusCodes.OK).json(results);
else
return res.status(StatusCodes.NOT_FOUND).end();
}
)
}else{
// (요약된) 전체 도서 리스트
let sql = `SELECT * FROM books`;
// SELECT 쿼리문
conn.query(sql,
(err, results) => {
if(err){
console.log(err)
return res.status(StatusCodes.BAD_REQUEST).end()
}
res.status(StatusCodes.OK).json(results);
}
)
}
}
const bookDetail = (req, res)=>{
let {id} = req.params;
id = parseInt(id);
let sql = `SELECT * FROM books WHERE id = ?`;
// SELECT 쿼리문
conn.query(sql, id,
(err, results) => {
if(err){
console.log(err)
return res.status(StatusCodes.BAD_REQUEST).end()
}
if(results[0])
return res.status(StatusCodes.OK).json(results[0]);
else
return res.status(StatusCodes.NOT_FOUND).end();
}
)
}
picsum 소개, 이미지 경로 추가
- 사이트 링크 : https://picsum.photos/
- 필요한 이미지 검색 가능
- 이미지 연결 위해 아이디 번호만 추가하면 된다.
<카테고리 API 구현>
카테고리 테이블 생성

카테고리 전체 목록 조회 API 구현
const conn = require('../mariadb') // db 모듈 가져오기
const {StatusCodes} = require('http-status-codes'); // status code 모듈
const allCategory = (req, res)=>{
// 카테고리 전체 목록 리스트
let sql = `SELECT * FROM category`;
// SELECT 쿼리문
conn.query(sql,
(err, results) => {
if(err){
console.log(err)
return res.status(StatusCodes.BAD_REQUEST).end()
}
res.status(StatusCodes.OK).json(results);
}
)
}
module.exports = {
allCategory
}
'프로젝트 > 도서구매사이트' 카테고리의 다른 글
| 1022 좋아요 API 구현 / 좋아요 개수 출력 - COUNT(), AS, 서브쿼리 (0) | 2025.10.21 |
|---|---|
| 1021 SQL 시간 범위 구하기(신간 안내), 도서 목록 페이지 구현 (0) | 2025.10.20 |
| 1017 회원 API 구현 - 컨트롤러 분리, 비밀번호 암호화/복호화 (0) | 2025.10.16 |
| 1016 도서 구매 사이트 프로젝트 셋팅 시작 (0) | 2025.10.16 |
| 1015 도서구매 사이트 REST API 및 ERD 설계 (0) | 2025.10.14 |