본문 바로가기

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

(22)
API 구현하기(3): 신간 도서 조회, 도서 목록 조회 페이징 SQL : 데이터베이스 시간 범위 구하기시간 더하기: DATE_ADD(기준 날짜, INTERVAL ) 시간 빼기: DATE_SUB(기준 날짜, INTERVAL) 시간 범위를 설정해서 SELECTSELECT * FROM books WHERE pub_date BETWEEN DATE_SUB(NOW() , INTERVAL 1 MONTH) AND NOW(); 최근 한 달 이내에 발행된 도서를 신간이라고 설정하고, 위의 구문을 통해 신간을 조회할 수 있다. 오늘 날짜 2024-10-07 을 기준으로 했을 때, 한 달 이내에 발행된 책들이 조회되는 것을 확인할 수 있다. 페이징페이징: 몇 개씩 보여줄까? SELECT * FROM 테이블명 LIMIT 몇 개씩 OFFSET 시작 지점(인덱스);LIMIT : 출력할 행의 ..
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(StatusCo..
API 구현하기(1) : 회원 가입, 로그인, 비밀번호 초기화 node.js 패키지(파일) 구조app.js: 프로젝트의 메인 라우터 역할/routes         /users.js : 하위 라우터 역할         /books.js : 하위 라우터 역할         ... 라우터가 로직까지 다 수행할 때 단점1) 프로젝트 규모가 커질수록 코드가 엄청 복잡해진다.➡️해결 방법:코드를 간결하고 가독성이 높게 만들어주자! 2) 가독성 X3) 트러블 슈팅 X => "유지보수 하기 어렵다"  컨트롤러: 프로젝트에서 매니저 역할을 하는 파일: 누군가에게 일을 어떻게 시켜야할지 알고 있다. = 직접 일을 하진 않을 것  ➡️라우터를 통해서 "사용자의 요청(req)이" 길(url)을 찾아오면 매니저(controller)가 환영해준다.알바생에게 일을 시키고, 결과물을 매니저에..
API 수정 및 ERD 설계 ERD: Entity Relationship Diagram의 약어로, 데이터베이스 구조를 한눈에 알아보기 위해서 쓰인다.   users : 회원 정보를 저장하는 테이블 books : 도서 정보를 저장하는 테이블 likes: 회원이 좋아요 한 도서를 저장하는 테이블: user_id 는 users 테이블을 참조하기 위한 외래키이다.: liked_book_id 는 books 테이블을 참조하기 위한 외래키이다.  cartItems : 장바구니에 넣은 항목을 저장하는 테이블: book_id는 books 테이블을 참조하기 위한 외래키이다.  delivery  : 주문자 정보를 저장하는 테이블 orders: 주문 정보를 저장하는 테이블: delivery_id 는 delivery 테이블을 참조하기 위한 외래키이다.  ..
API 설계 회원 API 1. 회원 가입MethodPOSTURI/users/joinHTTP status code성공: 201Request Body{    email: "사용자가 입력한 이메일",    password: "사용자가 입력한 비밀번호"}Response Body  2. 로그인MethodPOSTURI /users /loginHTTP status code성공: 200Request Body{    email: "사용자가 입력한 이메일",    password: "사용자가 입력한 비밀번호"}Response BodyJWT Token 3. 비밀번호 초기화 요청MethodPOSTURI /users /resetHTTP status code성공: 200Request Body{    email: "사용자가 입력한 이메일"}R..
도서 판매 쇼핑몰 프로젝트 1️⃣ 도서 검색 결과 페이지1. 도서 목록 노출: 각 도서 아이템 result ( 대표 이미지, 제목, 작가, 요약 정보, 가격, 좋아요 수) , total count: 페이지네이션 정보 (total page, current page)2. 검색 기능: 파라미터 => 키워드, 카테고리, 페이지, 목록 갯수2️⃣ 도서 상세 페이지1. 기본 정보 노출: 제목, 카테고리, 포맷, 작가명, ISBN, 쪽수, 요약설명, 상세설명, 목차, 가격, 좋아요 수, 내가 좋아요 했는지 여부, 이미지 여러장(슬라이드)2. 좋아요: 좋아요 버튼을 클릭하면 좋아요 수가 올라가고 표시됨3. 장바구니 담기: 장바구니 담기를 클릭하면 비로그인시 로그인 안내, 로그인 시 장바구니 담고 이동4. 추가 정보 노출: 리뷰 목록 ( 작성자,..