티스토리 뷰
도서 전체 조회 및 개별 조회 API 결과
도서 조회 API를 실행하여 다음과 같은 결과를 확인하였다.
도서 전체 조회
- 요청 (GET /books)
- {}
- 응답 (200 OK)
- [ {"id": 1, "title": "책 제목1", "category_id": 1, "pub_date": "2025-02-20"}, {"id": 2, "title": "책 제목2", "category_id": 2, "pub_date": "2025-03-10"} ]
카테고리가 1인 도서 조회 (GET /books?categoryid=1)
- 응답
- [ {"id": 1, "title": "책 제목1", "category_id": 1, "pub_date": "2025-02-20"} ]
카테고리가 1이고 신간인 도서 조회 (GET /books?categoryid=1&isnew=true)
- 응답→ 최근 한 달 내 출판된 도서가 없어 빈 배열 반환
- []
개별 도서 조회 (GET /books/1)
- 응답
- { "id": 1, "title": "책 제목1", "category_id": 1, "pub_date": "2025-02-20", "category_name": "소설" }
코드
도서 전체 조회 (카테고리, 신간 옵션)
const books = (req, res) => {
let categoryId = req.query.categoryid;
let isNew = req.query.isnew;
let sql = "SELECT * FROM books;"; // 전체 도서 조회
let values = [];
if (categoryId && isNew) {
// 카테고리별 신간 도서 조회
sql = `SELECT * FROM books WHERE category_id = ? AND
pub_date BETWEEN DATE_SUB(NOW(), INTERVAL 1 MONTH) AND NOW();`;
values = [categoryId, isNew];
} else if (categoryId) {
// 카테고리별 조회
sql = "SELECT * FROM books WHERE category_id = ?";
values = [categoryId];
} else if (isNew) {
// 신간 조회
sql = `SELECT * FROM books WHERE
pub_date BETWEEN DATE_SUB(NOW(), INTERVAL 1 MONTH) AND NOW();`;
values = [isNew];
}
conn.query(sql, values, (err, results) => {
if (err) {
return res.status(StatusCodes.BAD_REQUEST).json({
msg: `Error: ${err.code}`,
});
}
return res.status(StatusCodes.OK).json(results);
});
};
개별 도서 조회
const bookDetail = (req, res) => {
let { id } = req.params;
id = parseInt(id);
const sql = `SELECT * FROM books LEFT JOIN categories
ON books.category_id = categories.id WHERE id=?;`;
conn.query(sql, id, (err, results) => {
if (err) {
return res.status(StatusCodes.BAD_REQUEST).json({
msg: `Error: ${err.code}`,
});
}
if (results[0]) {
return res.status(StatusCodes.OK).json(results[0]);
} else {
return res.status(StatusCodes.NOT_FOUND).end();
}
});
};
