
{
email : "사용자가 입력한 이메일",
password : "사용자가 입력한 비밀번호"
}{
email : "사용자가 입력한 이메일",
password : "사용자가 입력한 비밀번호"
}{
id : 사용자 id,
email : 사용자 email
}{
email : "사용자가 입력한 이메일"
}{
email : "이메일"
}{
email : "이전 페이지에서 입력했던 이메일",
password : "사용자가 입력한 새로운 비밀번호"
}// 전체 도서 목록에는 도서의 상세 정보를 모두 포함합니다.
// 필요한 데이터만 선별하여 구현 부탁드립니다.
{
books : [
{
id : 도서 id,
title : "도서 제목",
img : 이미지 id (picsum image #num),
summary : "요약 설명",
author : "도서 작가",
price : 가격,
likes : 좋아요 수,
pubDate : 출간일
},
{
id : 도서 id,
title : "도서 제목",
summary : "요약 설명",
author : "도서 작가",
price : 가격,
likes : 좋아요 수,
pubDate : 출간일
},
...
],
pagination : {
currentPage : 현재 페이지,
totlaCount : 총 도서 수
}
}{
id : 도서 id,
title : "도서 제목",
img : 이미지 id (picsum image #num),
format : "포맷",
isbn : "isbn",
summary : "요약 설명",
detail : "상세 설명",
author : "도서 작가",
pages : 쪽 수,
contents : "목차",
price : 가격,
likes : 좋아요 수,
liked : boolean, (<- (new)로그인 상태에만 응답에 넣어준다.)
pubDate : 출간일
}SELECT EXISTS 쿼리를 통해 likes 테이블에 특정 유저가 특정 책을 좋아요 추가했는지에 대한 데이터가 존재하는지 확인하여 응답할 수 있게 되었다.// 전체 도서 목록에는 도서의 상세 정보를 모두 포함합니다.
// 필요한 데이터만 선별하여 구현 부탁드립니다.
{
books : [
{
id : 도서 id,
title : "도서 제목",
img : 이미지 id (picsum image #num),
summary : "요약 설명",
author : "도서 작가",
price : 가격,
likes : 좋아요 수,
pubDate : 출간일
},
{
id : 도서 id,
title : "도서 제목",
summary : "요약 설명",
author : "도서 작가",
price : 가격,
likes : 좋아요 수,
pubDate : 출간일
},
...
],
pagination : {
currentPage : 현재 페이지,
totlaCount : 총 도서 수
}
}[
{
id = 카테고리 id,
name = 카테고리 이름
},
{
id = 카테고리 id,
name = 카테고리 이름
},
...
]{
bookId : 도서 id,
quantity : 구매 수량
}(new)나의 장바구니 조회하는 경우 : Request Body 없음
(new)(주문 예상 상품) 선택한 장바구니 상품 목록 조회 하는 경우
{
selected : [ cartItem_id, cartItem_id, ... ]
}
[
{
id : 장바구니에 담긴 도서 id,
bookId : 도서 id,
title : "도서 제목",
summary : "도서 요약",
quantity : 구매 수량,
price : 가격
},
{
id : 장바구니에 담긴 도서 id,
bookId : 도서 id,
title : "도서 제목",
summary : "도서 요약",
quantity : 구매 수량,
price : 가격
},
...
][ cartItem_id, cartItem_id, ... ][
{
id : 장바구니에 담긴 도서 id,
bookId : 도서 id,
title : "도서 제목",
summary : "도서 요약",
quantity : 구매 수량,
price : 가격
},
{
id : 장바구니에 담긴 도서 id,
bookId : 도서 id,
title : "도서 제목",
summary : "도서 요약",
quantity : 구매 수량,
price : 가격
},
...
]{
items : [ 장바구니 도서 id, 장바구니 도서 id, ...],
delivery : {
address : "주소",
receiver : "이름",
contact : "010-0000-0000"
},
totalQuantity : 총 수량,
totalPrice : 총 금액,
firstBookTitle : 대표 도서 제목
// 결제방법은 보류
}BODY로 들어오는 값들을 살펴보자
이때 orderedBook 테이블은 orders 테이블의 id를 참조하고 있다.
그리고 orders 테이블은 delivery 테이블의 id를 참조하고 있다.
👍 즉, 1️⃣ delivery → 2️⃣ orders → 3️⃣ orderedBook 순서로 테이블에 INSERT 해야 한다.
firstBookTitle : 장바구니 API의 주문 예상 목록 조회 시, 도서의 제목도 같이 보내주고 있는것을 이용하여 주문 결제 시, 맨 첫번째 도서의 제목도 같이 받아오기로 설계 변경
기존의 cartItem_id만 있다면 book_id와 quantity를 확인해 볼 수 있으니 BODY값을 더욱 간단하게 변경하였다.
또한, 주문 완료한 상품 삭제 기능에서 items Array만 있으면 삭제하기가 쉬워진다는 이점이 생긴다.
JSON Array
[
{
id : 주문 id,
createAt : "주문 일자",
address : "주소",
receiver : "이름",
contact : "전화번호"
bookTitle : "대표 책 제목",
totalQuantity : 총 수량 ,
totalPrice : 총 결제 금액
},{
id : 주문 id,
createAt : "주문 일자",
address : "주소",
receiver : "이름",
contact : "전화번호"
bookTitle : "대표 책 제목",
totalQuantity : 총 수량 ,
totalPrice : 총 결제 금액
},
...
]
[
{
bookId : 도서 id,
bookTitle : "도서 제목",
author : "작가명",
price : 가격,
quanity : 수량
},{
bookId : 도서 id,
bookTitle : "도서 제목",
author : "작가명",
price : 가격,
quantity : 수량
},
...
]