7-3 도서 판매 사이트 API & ERD

airbus·2025년 3월 6일

프로그래머스

목록 보기
30/93

[7-2][7-3] 도서판매 사이트 ERD

API

회원 API

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			-

도서 API

  1. 전체 도서 조회
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 = 전체 조회

좋아요 API

  1. 좋아요 추가
Method					POST
URI						/likes/{bookId}
HTTP status code		200 (성공)
Request Body			{
                            -
                        }
Response Body			-
  1. 좋아요 취소
Method					DELETE
URI						/likes/{bookId}
HTTP status code		200
Request Body			{
							-
                        }
Response Body			-

장바구니 API

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

주문 API

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 : 수량
                          },
                          ...
                     	 ]

ERD

ERD 테이블 설계

tool dbdiagram.io

  • 설계된 API를 참고하여 테이블만 작성

0개의 댓글