[BookShop 프로젝트] Books API 구현 - picsum

전체 도서 조회

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

: 가짜 사진 가져올 수 있는 사이트 

https://picsum.photos/

 

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