본문 바로가기

데브코스/도서 판매 쇼핑몰

API 구현하기(2): 도서 조회

카테고리별 도서 조회 , 전체 도서 조회

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);
      }
    )
  }
};

query 를 통해 받은 category_id 가 있으면 카테고리별 도서 목록 조회를 수행하고, 없으면 전체 도서 조회를 수행한다.

왼) 카테고리별 도서 조회, 오) 전체 도서 조회

 

개별 도서 조회

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.length)
        return res.status(StatusCodes.OK).json(results[0]);
      else
        return res.status(StatusCodes.NOT_FOUND).end();
    }
  )
};

url 에 입력된 id 값을 통해 해당 id를 가진 도서가 있으면 도서 정보를 반환하고, 없을 경우에는 404(NOT FOUND) 상태 코드를 반환한다.

개별 도서 조회


🌟 배운 점

오늘은 도서 조회 API 를 구현했다. 이전에는 강의를 들으면서 똑같이 따라하는 것에 집중했다면, 오늘은 강의를 듣기 전에 혼자 해보려고 노력했다. 이제 어느정도 익숙해져서 계속 반복하면서 했던 것들은 혼자 할 수 있게 되었다. 얼른 프론트엔드까지 배워서 완전한 웹사이트를 만들 수 있는 실력이 되었으면 좋겠다. 그러기 위해서 오류가 났을 때도 혼자 해결하려는 노력을 더 해야겠다.