
{
email : "사용자가 입력한 이메일",
password : "사용자가 입력한 비밀번호"
}{
email : "사용자가 입력한 이메일",
password : "사용자가 입력한 비밀번호"
}{
email : "사용자가 입력한 이메일"
}{
email : "이메일"
}{
email : "이전 페이지에서 입력했던 이메일",
password : "사용자가 입력한 새로운 비밀번호"
}// 전체 도서 목록에는 도서의 상세 정보를 모두 포함합니다.
// 필요한 데이터만 선별하여 구현 부탁드립니다.
[
{
id : 도서 id,
title : "도서 제목",
img : 이미지 id (picsum image #num),
summary : "요약 설명",
author : "도서 작가",
price : 가격,
likes : 좋아요 수,
pubDate : 출간일
},
{
id : 도서 id,
title : "도서 제목",
summary : "요약 설명",
author : "도서 작가",
price : 가격,
likes : 좋아요 수,
pubDate : 출간일
},
...
]{
id : 도서 id,
title : "도서 제목",
img : 이미지 id (picsum image #num),
category : "카테고리",
format : "포맷",
isbn : "isbn",
summary : "요약 설명",
description : "상세 설명",
author : "도서 작가",
pages : 쪽 수,
index : "목차",
price : 가격,
likes : 좋아요 수,
liked : boolean,
pubDate : 출간일
}SELECT EXISTS 쿼리를 통해 likes 테이블에 특정 유저가 특정 책을 좋아요 추가했는지에 대한 데이터가 존재하는지 확인하여 응답할 수 있게 되었다.[
{
id : 도서 id,
title : "도서 제목",
img : 이미지 id (picsum image #num),
summary : "요약 설명",
author : "도서 작가",
price : 가격,
likes : 좋아요 수,
pubDate : 출간일
},
{
id : 도서 id,
title : "도서 제목",
img : 이미지 id (picsum image #num),
summary : "요약 설명",
author : "도서 작가",
price : 가격,
likes : 좋아요 수,
pubDate : 출간일
},
...
][
{
id = 카테고리 id,
name = 카테고리 이름
},{
id = 카테고리 id,
name = 카테고리 이름
},
...
]로그인할 때 받은 JWT (header “Authorization”)
JWT의 PAYLOAD 값을 읽는다 = 사용자의 id값을 읽을 수 있다.
// 일단은 토큰을 받아서 유저의 id값을 확인했다고 치고 기능구현을 진행한다.
로그인할 때 받은 JWT (header “Authorization”)
JWT의 PAYLOAD 값을 읽는다 = 사용자의 id값을 읽을 수 있다.
// 일단은 BODY로 토큰을 받아서 유저의 id값을 확인했다고 치고 기능구현을 진행한다.
{
book_id : 도서 id,
quantity : 구매 수량,
user_id : 유저 id
}로그인할 때 받은 JWT (header “Authorization”)
JWT의 PAYLOAD 값을 읽는다 = 사용자의 id값을 읽을 수 있다.
// 일단은 BODY로 토큰을 받아서 유저의 id값을 확인했다고 치고 기능구현을 진행한다.
{
user_id : 유저 id,
selected : [ cartItem_id, cartItem_id, ... ]
}[
{
cartItem_id : 장바구니에 담긴 도서 id,
book_id : 도서 id,
title : "도서 제목",
summary : "도서 요약",
quantity : 구매 수량,
price : 가격
},
{
cartItem_id : 장바구니에 담긴 도서 id,
book_id : 도서 id,
title : "도서 제목",
summary : "도서 요약",
quantity : 구매 수량,
price : 가격
},
...
][ cartItem_id, cartItem_id, ... ][
{
cartItem_id : 장바구니에 담긴 도서 id,
book_id : 도서 id,
title : "도서 제목",
summary : "도서 요약",
quantity : 구매 수량,
price : 가격
},
{
cartItem_id : 장바구니에 담긴 도서 id,
book_id : 도서 id,
title : "도서 제목",
summary : "도서 요약",
quantity : 구매 수량,
price : 가격
},
...
]어떤 회원의 장바구니인지 확인필요
로그인할 때 받은 JWT (header “Authorization”)
JWT의 PAYLOAD 값을 읽는다 = 사용자의 id값을 읽을 수 있다.
// 일단은 BODY로 토큰을 받아서 유저의 id값을 확인했다고 치고 기능구현을 진행한다.
JSON
{
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의 주문 예상 목록 조회 시, 도서의 제목도 같이 보내주고 있는것을 이용하여 주문 결제 시, 맨 첫번째 도서의 제목도 같이 받아오기로 설계 변경
(new)기존의 cartItem_id만 있다면 book_id와 quantity를 확인해 볼 수 있으니 BODY값을 더욱 간단하게 변경하였다.
또한, 주문 완료한 상품 삭제 기능에서 items Array만 있으면 삭제하기가 쉬워진다는 이점이 생긴다.
{
"user_id" : 사용자 id
}[
{
id : 주문 id,
create_at : "주문 일자",
address : "주소",
receiver : "이름",
contact : "전화번호"
book_title : "대표 책 제목",
total_quantity : 총 수량 ,
total_price : 총 결제 금액
},{
order_id : 주문 id,
create_at : "주문 일자",
address : "주소",
receiver : "이름",
contact : "전화번호"
book_title : "대표 책 제목",
total_quantity : 총 수량 ,
total_price : 총 결제 금액
},
...
][
{
book_id : 도서 id,
book_title : "도서 제목",
author : "작가명",
price : 가격,
quanity : 수량
},{
book_id : 도서 id,
book_title : "도서 제목",
author : "작가명",
price : 가격,
quantity : 수량
},
...
]