티스토리 뷰

카테고리 없음

8주차 파트3

파이썬 초보 파이리 2025. 3. 15. 15:43

도서 전체 조회 및 개별 조회 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();
    }
  });
};

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함