BookStore API 설계

데브코스

목록 보기
55/133

일단 간단하게 api설계를 짜보려고 합니당
지금은 딱 생각나는 필요한 것들만 짜보고,
나중에 코드로 구현할때, 더 고도화해서 손 봐보겠습니당


회원 API


1. 회원가입

  • Method : POST
  • URL : /join
  • HTTP status code : 성공 201
  • Request Body :
{
					email : "사용자가 입력한 이메일",
                    password : "사용자가 입력한 비밀번호"
                    }

2. 로그인

  • Method : POST
  • URL : /login
  • HTTP status code : 성공 200
  • Request Body :
{
					email : "사용자가 입력한 이메일",
                    password : "사용자가 입력한 비밀번호"
                    }
  • Response Body : JWT Token

3. 비밀번호 초기화 요청

  • Method : POST
  • URL : /reset
  • HTTP status code : 성공 200
  • Request Body : ```
    {
    email : "사용자가 입력한 이메일"
    }
  • Response Body :

4. 비밀번호 변경(=수정)

  • Method : PUT
  • URL : /reset
  • HTTP status code : 성공 200
  • Request Body :
{
					password : "사용자가 입력한 이메일"
                    }
  • Response Body :

도서 API


1. 전체 도서 조회 //이미지 주소, 8개씩 보내줘야 함.

  • Method : GET
  • URL : /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 : "출간일"
    },
    
    ...
 ]   
    
    

2. 개별 도서 조회

//이미지 경로 8개씩 추가해야함

  • Method : GET
  • URL : /books/{bookId}
  • HTTP status code : 성공 200
  • Request Body :
{
					
                    }
  • Response Body :
[
	{
    	id : "도서 Id",
        title : "도서제목",
        category : "카테고리",
        foramt : "포맷(종이책인지, e북인지)",
        isbn : "isbn",
        summary : "요약 설명",
        description : "상세설명",
        author : "글쓴이",
        pages : "쪽 수",
        index : "목차",
        price : "가격",
        likes : "좋아요 수",
        liked : boolean,
        pubDate : "출간일"
    },
    {
    	id : "도서 Id",
        title : "도서제목",
        category : "카테고리",
        foramt : "포맷(종이책인지, e북인지)",
        isbn : "isbn",
        summary : "요약 설명",
        description : "상세설명",
        author : "글쓴이",
        pages : "쪽 수",
        index : "목차",
        price : "가격",
        likes : "좋아요 수",
        liked : boolean,
        pubDate : "출간일"
    },
    
    ...
  ] 
    

3. 카테고리별 도서 목록 조회

//이미지 경로 8개씩 추가해야함

  • new 가 true로 날라오면 신간 조회를 해줌.(기준 : 출간일 30일 이내)

  • Method : GET

  • URL : /books?categoryId={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 : "출간일"
    },
    
    ...
 ]   
    

좋아요 API


1. 좋아요 추가

  • Method : POST
  • URL : /likes/{bookId}
  • HTTP status code : 성공 200
  • Request Body : ```
    {
                    }

2. 좋아요 취소

  • Method : DELETE
  • URL : /likes/{bookId}
  • HTTP status code : 성공 200
  • Request Body : ```
    {
                    }

장바구니 API


1. 장바구니 담기

  • Method : POST
  • URL : /cart
  • HTTP status code : 성공 201
  • Request Body :
{
					bookId : "도서 Id",
                    count : "수량"
                    }

2. 장바구니 조회

  • Method : GET
  • URL : /cart
  • HTTP status code : 성공 200
  • Request Body :
{
					
                    }
  • Response Body :
[
	{	
    	cartItemId : "장바구니 도서 id",
    	bookId : "도서 id",
    	title : "도서 제목",
        summary : "도서 요약",
        price : "가격",
        count : "수량"
    
    
	},
    {
    	cartItemId : "장바구니 도서 id",
    	bookId : "도서 id",
    	title : "도서 제목",
        summary : "도서 요약",
        price : "가격",
    	count : "수량"
    
	},
    
    ...
]


3. 장바구니 도서 삭제

  • Method : DELETE
  • URL : /cart/{bookId}
  • HTTP status code : 성공 200
  • Request Body :
{
				
                    }
  • Response Body :

주문 API


1. 주문 페이지(아직 결제 전이야)

  • Method : GET
  • URL : /cart/{bookId}
  • HTTP status code : 성공 200
  • Request Body :
{
	cartItemId, cartItemId
                    }
  • Response Body :
[
	{
    	cartItemId : "장바구니 도서 id",
    	bookId : "도서 id",
    	title : "도서 제목",
        summary : "도서 요약",
        price : "가격",
        count : "수량"
    
    
	},
    {
    	cartItemId : "장바구니 도서 id",
    	bookId : "도서 id",
    	title : "도서 제목",
        summary : "도서 요약",
        price : "가격",
    	count : "수량"
    
	},
    
    ...
]

delivery API

  1. 배송 정보 입력 및 주문 하는 곳

Request Body :
{
id : 1
address : 서울 강남
receiver : 홍길동
contact : 010-1234-5678
}


결제(주문) API

  1. 결제하기 == 주문하기 == 주문 등록이고 == 데이터베이스 주문 insert = 그럼 장바구니에서 주문된 상품은 delete
  • Method : POST
  • URL : /orders
  • HTTP status code : 성공 200
  • Request Body :
{
	items : "[{
    	cartItemId : 장바구니의 도서 id
    	bookId : 도서 id,
        count : 수량,
    },
    {
    	cartItemId : 장바구니의 도서 id
    	bookId : 도서 id,
        count : 수량
    }
    ]," //장바구니 id만 가져오면 그 안에 내상품 정보가 다 있어
    delivery : {
    	address : "주소",
        receiver : "이름",
        contact : "010-0000-0000"
    }
    totalPrice : 총 금액
}
  • Response Body :

2. 주문 목록(내역) 조회

  • Method : GET
  • URL : /orders
  • HTTP status code : 성공 200
  • Request Body :
  • Response Body :
{
	{
    	order_id : "주문 id",
    	created_at : "주문 일자"
        delivery : {
        	address : "주소",
            receiver : "이름",
            contact : "전화번호"
        },
        bookTitle : "대표 책 제목",
        totalPrice : "결제 금액",
        totalCount : "총 수량"
    	
    }
}

3. 주문 상세 상품 조회

  • Method : GET
  • URL : /orders/{orderId}
  • HTTP status code : 성공 200
  • Request Body :
  • Response Body :
[
	{
    	bookId : 도서 id,
        bookTitle : "도서 제목",
        author : "작가명",
        price : "가격",
        count : 수량
    },
    {
    	bookId : 도서 id,
        bookTitle : "도서 제목",
        author : "작가명",
        price : "가격",
        count : 수량
    },
    
    ...

]

아직 더 부족한데, ERD를 이제 그리고 다시 필요한 것을 적어넣어보자.
지금 장바구니에서 주문 페이지를 넘어왔을때, 장바구니에 있는 정보를 주문 페이지에 가져와야 하는데, 어떻게 하면 될까?

ERD 한 번 그려보고 다시 설계 ㄱㄱ

profile
Dive Head First | Work Super Hard | Attract Great People

0개의 댓글