[7-2][7-3] 도서판매 사이트 ERD
1. 회원가입
Method POST
URI /join
HTTP status code 201 (성공)
Request Body {
email : "사용자가 입력하는 이메일",
password : " 사용자가 입력한 비밀번호"
}
Response Body - // 백엔드 쪽에서는 해줄 만한것이 없음. 프론트쪽에서는 화면을 바꾸던가, 환영메시지 등.
2. 로그인
Method POST
URI /login
HTTP status code 200 (성공)
Request Body {
email : "사용자가 입력하는 이메일",
password : "사용자가 입력한 비밀번호"
}
Response Body JWT Token
3. 비밀번호 초기화(=수정)
3-1 이메일이 존재하는지 확인
Method POST
URI /reset
HTTP status code 200 (성공)
Request Body {
email : "사용자가 입력한 이메일"
}
Response Body -
3-2 비밀번호 초기화(수정)
Method PUT
URI /reset
HTTP status code 200 (성공)
Request Body {
password : "사용자가 입력한 비밀번호"
}
Response Body -
Method GET
URI /books
HTTP status code 200 (성공)
Request Body {
-
}
Response Body [
{
id : 도서 id,
title : "도서 제목",
summary : "요약 설명",
author : "도서 작가",
price : 가격,
likes : 좋아요 수,
pubDate : "출간일"
},
{
id : 도서 id,
title : "도서 제목",
summary : "요약 설명",
author : "도서 작가",
price : 가격,
likes : 좋아요 수,
pubDate : "출간일"
},
...
]
// 이미지는 보류 / 8개씩 보내줘야 함
2. 개별 도서 조회
Method GET
URI /books/{bookId}
HTTP status code 200 (성공)
Request Body {
-
}
Response Body {
id : 도서 id //각 이미지 클릭시 도서의 상세페이지로 연결되게
title : "도서 제목",
category : "카테고리",
format : "포맷",
isbn : "isbn",
summary : "요약 설명",
description : "상세 설명",
author : "도서 작가",
pages : 쪽 수,
index : "목차",
price : 가격,
likes : 좋아요 수
liked : boolean (내가 좋아요를 눌렀는지)
pubDate : "출간일",
//image : 이미지 경로에 대해서는 아직 고려가 안되어있음
}
3. 신간 도서 조회
Method GET
URI /books?category={categoryId}&new={boolean} // 카테고리마다 신간만 조회하는
HTTP status code 200 (성공)
Request Body {
-
}
Response Body [
{
id : 도서 id,
title : "도서 제목",
summary : "요약 설명",
author : "도서 작가",
price : 가격,
likes : 좋아요 수,
pubDate : "출간일"
},
{
id : 도서 id,
title : "도서 제목",
summary : "요약 설명",
author : "도서 작가",
price : 가격,
likes : 좋아요 수,
pubDate : "출간일"
},
...
]
// new : true = 신간 조회 (출간일 30일 이내일 때) / new : false = 전체 조회
Method POST
URI /likes/{bookId}
HTTP status code 200 (성공)
Request Body {
-
}
Response Body -
Method DELETE
URI /likes/{bookId}
HTTP status code 200
Request Body {
-
}
Response Body -
1. 장바구니 담기
Method POST
URI /cart
HTTP status code 201 (성공)
Request Body {
bookId : 도서 id,
count : 수량
}
Response Body -
2. 장바구니 조회
Method GET
URI /cart
HTTP status code 200 (성공)
Request Body {
-
}
Response Body [ // 장바구니에 담긴 내용을 list 형식으로
{
bookId : 도서 id,
title : "도서 제목",
summary : "도서 요약",
count : 수량,
price : 가격
},
{
bookId : 도서 id,
title : "도서 제목",
summary : "도서 요약",
count : 수량,
price : 가격
}
...
]
3. 장바구니 제거 (=장바구니 특정 도서 삭제)
Method DELETE
URI /cart/{bookId}
HTTP status code 200 (성공)
Request Body {
-
}
Response Body -
**4. 장바구니에서 선택한 (주문 예상) 상품 목록 조회
Method GET
URI /...
HTTP status code 200 (성공)
Request Body {
[cartItemId, cartItemId, ...]
}
Response Body [ // 장바구니에 담긴 내용을 list 형식으로
{
bookId : 도서 id,
title : "도서 제목",
summary : "도서 요약",
count : 수량,
price : 가격
},
{
bookId : 도서 id,
title : "도서 제목",
summary : "도서 요약",
count : 수량,
price : 가격
}
...
]
주문 예정 = 장바구니에서 선택만 함 -> 결제하기 전이기 때문에 장바구니 API 인 것, 주문 API x
1. 결제/주문
결제하기 = 주문하기 = 주문등록 = 데이터베이스 주문 insert
결제된 도서는 장바구니에서 delete
Method POST
URI /orders
HTTP status code 200 (성공)
Request Body {
items : [cartItemId, cartItemId, ...], 상품 목록 : [장바구니 Id만 배열로 받아오기],
==>
items : [{
cartItemId : 장바구니 도서 id, // 결제되고 장바구니에서 해당 책 삭제
bookId :도서 id,
count : 수량
},
{
cartItemId : 장바구니 도서 id,
bookId : 도서 id,
count : 수량
},
...
],
delivery : {
address : "주소",
receiver : "이름",
contact : "010-9999-0900",
},
totalPrice : 총 금액
}
Response Body -
2. 주문 목록 조회
Method GET
URI /orders
HTTP status code 200 (성공)
Request Body [
{
order_id : 주문 id,
created_at : “주문 일자”,
delivery : {
address : “주소”,
receiver : “이름,
contact : “전화번호”
},
bookTitle : “대표 책 제목”,
totalPrice : 결제 금액,
totalCount : 총 수량
}
]
Response Body -
3. 주문 상세 상품 조회
Method GET
URI /orders/{orderId}
HTTP status code 200 (성공)
Request Body {
-
}
Response Body [
{
bookId : 도서 id,
bookTitle : “도서 제목”,
author : “작가명”,
price : 가격,
count : 수량
},
{
bookId : 도서 id,
bookTitle : “도서 제목”,
author : “작가명”,
price : 가격,
count : 수량
},
...
]
tool dbdiagram.io