도서 API 설계
BookController.js
const connection = require("../mariadb"); // db모듈
const { StatusCodes } = require("http-status-codes");
const allBooks = (req, res) => {
let { category_id } = req.query; //이거 req할때, 값을 가져오는 방법이 query, body, params 이렇게 가져올 수 있는건가?
if (category_id) {
let sql = `SELECT * FROM books WHERE category_id = ?`; //이 sql에서 필요한 정보만 뽑아올 수도 있어 어떻게? WHERE절로 조건을 걸어서 내가 원하는 도서 정보만 뽑아오는 거지
connection.query(sql, category_id, (err, result) => {
if (err) {
console.log(err);
return res.status(StatusCodes.BAD_REQUEST).end();
}
if (result.length) return res.status(StatusCodes.CREATED).json(result);
else return res.status(StatusCodes.NOT_FOUND).end();
});
} else {
//전체 도서 리스트
let sql = `SELECT * FROM books`; //이 sql에서 필요한 정보만 뽑아올 수도 있어
connection.query(sql, (err, result) => {
if (err) {
console.log(err);
return res.status(StatusCodes.BAD_REQUEST).end();
}
return res.status(StatusCodes.CREATED).json(result);
});
}
};
const bookDetail = (req, res) => {
let { id } = req.params;
id = parseInt(id); //문자열로 들어오니까 숫자로 바꿔줘야해
let sql = `SELECT * FROM books WHERE id = ?`; //이 sql에서 필요한 정보만 뽑아올 수도 있어 어떻게? WHERE절로 조건을 걸어서 내가 원하는 도서 정보만 뽑아오는 거지
connection.query(sql, id, (err, result) => {
if (err) {
console.log(err);
return res.status(StatusCodes.BAD_REQUEST).end();
}
if (result[0]) return res.status(StatusCodes.CREATED).json(result[0]);
else return res.status(StatusCodes.NOT_FOUND).end();
});
};
module.exports = {
allBooks,
bookDetail,
};
books.js (라우터)
const express = require('express');
const { allBooks, bookDetail } = require('../controller/bookController');
const router = express.Router();
router.use(express.json());
router.get('/', allBooks);
router.get('/:id', bookDetail);
module.exports = router
카테고리 API 설계
categoryController.js
const router = express.Router();
const { allCategory } = require("../controller/CategoryController"); //이게 라우터에서 쓸 컨트롤러들을 불러오는 명령어야.
router.use(express.json());
//카테고리 전체 목록 조회
router.get('/', allCategory);
module.exports = router;
category.js (라우터)
const express = require("express");
const router = express.Router();
const { allBooks, bookDetail } = require("../controller/BookController");
router.use(express.json());
router.get("/", allBooks);
router.get("/:id", bookDetail);
module.exports = router;
CategoryController.js (컨트롤러)
const connection = require("../mariadb");
const { StatusCodes } = require("http-status-codes");
const allCategory = (req, res) => {
let sql = `SELECT * FROM category`;
connection.query(sql, (err, result) => {
if (err) {
console.log(err);
return res.status(StatusCodes.BAD_REQUEST).end();
}
return res.status(StatusCodes.CREATED).json(result);
});
};
module.exports = {
allCategory,
};
