전체 도서 조회
const allBooks = (req, res)=> {
//(요약된) 전체 도서 리스트 -> 부분적으로 뽑는 건 프론트엔드
let sql = "SELECT * FROM books";
conn.query(sql, (err, results) => {
if(err) {
console.log(err);
return res.status(StatusCodes.BAD_REQUEST).end();
}
return res.status(StatusCodes.OK).json(results);
})
};

개별 도서 조회
const bookDetail = (req, res)=> {
let {id} = req.params;
let sql = "SELECT * FROM books WHERE id = ?";
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
: 가짜 사진 가져올 수 있는 사이트
Lorem Picsum
Lorem Ipsum... but for photos
picsum.photos
카테고리별 도서 목록 조회
-> 전체 도서 목록 조회와 API 합침
const allBooks = (req, res)=> {
let {category_id} = req.query;
if(category_id) {
let sql = "SELECT * FROM books WHERE category_id = ?";
conn.query(sql, category_id,
(err, results) => {
if(err) {
console.log(err);
return res.status(StatusCodes.BAD_REQUEST).end();
}
if(results.length){
return res.status(StatusCodes.OK).json(results);
}
else {
return res.status(StatusCodes.NOT_FOUND).end();
}
})
}
else {
//(요약된) 전체 도서 리스트 -> 부분적으로 뽑는 건 프론트엔드
let sql = "SELECT * FROM books";
conn.query(sql, (err, results) => {
if(err) {
console.log(err);
return res.status(StatusCodes.BAD_REQUEST).end();
}
return res.status(StatusCodes.OK).json(results);
})
}
};

카테고리 id <-> 실제 이름 프론트엔드에게 넘겨주기 위해서는,
카테고리 id에 따른 카테고리 이름을 저장하는 테이블을 만들어야합니다.
const conn = require('../mariadb'); //db 모듈
const {StatusCodes} = require('http-status-codes'); //status code 모듈
const allCategory = (req, res)=> {
//카테고리 전체 목록 리스트
let sql = "SELECT * FROM category";
conn.query(sql, (err, results) => {
if(err) {
console.log(err);
return res.status(StatusCodes.BAD_REQUEST).end();
}
return res.status(StatusCodes.OK).json(results);
})
};
module.exports = {
allCategory
};

'Devcourse > BookShop 사이드 프로젝트' 카테고리의 다른 글
| [BookShop 프로젝트] 주문 API - LAST_INSERT_ID(), MAX()로 최신 데이터 가져오기, insertId, 벌크 INSERT (0) | 2026.02.20 |
|---|---|
| [BookShop 프로젝트] 장바구니 API - fk제약조건, in(~, ~) (0) | 2026.02.19 |
| [BookShop] 좋아요 API 구현 - count(), EXISTS (0) | 2026.02.18 |
| [BookShop 프로젝트] Users API 구현 - http-status-codes 모듈, 컨트롤러, crypto 모듈(비밀번호 암호화) (0) | 2026.02.13 |
| [BookShop 프로젝트] API 설계, dbdiagram (0) | 2026.02.09 |