데브코스

[6주차 - DAY5] 도서 정보 API 설계

미안하다 강림이 좀 늦었다 2024. 4. 5. 10:52

 

 

회원 API

회원 가입

이메일과 비밀번호를 입력받아 회원가입한다.

Method POST
URI /join
HTTP Status Code 성공 (201)
Request Body {
    email: “사용자가 입력한 이메일
    password: “사용자가 입력한 비밀번호
}
Response Body  

 

로그인

이메일과 비밀번호로 로그인하고, 로그인에 성공하면 토큰을 발행해 준다.

Method POST
URI /login
HTTP Status Code 성공(200)
Request Body {
    email: “사용자가 입력한 이메일
    password: “사용자가 입력한 비밀번호
}
Response Body JWT token

 

비밀번호 초기화 요청

비밀번호를 초기화하는 버튼을 클릭했을 때 발생하는 요청이다.

Method POST
URI /reset
HTTP Status Code 성공(200)
Request Body {
    email: “사용자가 입력한 이메일
}
Response Body  

 

비밀번호 초기화(수정)

비밀번호를 수정하는 API이다.

Method PUT
URI /reset
HTTP Status Code 성공(200)
Request Body {
    password: “사용자가 입력한 비밀번호
}
Response Body  

 

 

도서 API

전체 도서 조회

이미지 경로와 한 번에 8개씩 보내는 것은 아직 고려하지 않았다.

Method GET
URI /books
HTTP Status Code 성공(200)
Request Body  
Response Body [
    {
        id: 도서 id,
        title: “도서 제목”,
        summary: ‘요약 설명”,
        author: “작가”,
        price: 가격,
        likes: “좋아요 수”,
        pubDate: “출간일
    },
   
]

 

개별 도서 조회

이미지 경로는 고려하지 않았다. 전체 도서를 조회할 때보다 더 상세한 정보를 보여준다.

Method GET
URI /books/{bookId}
HTTP Status Code 성공(200)
Request Body  
Response Body {
    id: 도서 id,
    title: “도서 제목”,
    cartegory: “카테고리”,
    format: “포맷”,
    isbn: “isbn”,
    summary: ‘요약 설명”,
    description: “상세 설명
    author: “작가”,
    pages: 쪽 수,
    index: “목차”,
    price: 가격,
    likes: “좋아요 수
    liked: Boolean,
    pubDate: “출간일
}

 

카테고리별 도서 목록 조회

도서를 카테고리별로 조회할 수 있고, 신간도 확인할 수 있는 페이지이다.

신간은 출간일 30일 이내의 책들이다.

이미지 경로와 한 번에 8개씩 보내주는 것은 고려하지 않았다.

Method GET
URI /books?categoryId={categoryId}&new={boolean}
HTTP Status Code 성공(200)
Request Body  
Response Body [
    {
        id: 도서 id,
        title: “도서 제목”,
        summary: ‘요약 설명”,
        author: “작가”,
        price: 가격,
        likes: “좋아요 수
        pubDate: “출간일
    },
    …
]

 

 

좋아요  API

좋아요 추가/취소

도서를 찜(좋아요)할 수 있는 기능이다.

아직 세부적인 사항을 작성하지 않았다.

Method PUT
URI /likes/{bookId}
HTTP Status Code 성공(200)
Request Body  
Response Body  

 

 

장바구니 API

장바구니 담기

사용자마다 장바구니가 다르기 때문에 사용자 id도 추후에 반영되어야 할 것 같다.

Method POST
URI /cart
HTTP Status Code 성공(201)
Request Body {
    bookId: 도서 id,
    count: 수량,
}
Response Body  

 

장바구니 조회

도서 id만으로는 장바구니에 담긴 각 항목들을 명확하게 구분하기 힘들 수 있기 때문에 장바구니 도서 id를 사용한다.

Method GET
URI /cart
HTTP Status Code 성공(200)
Request Body  
Response Body [
    {
        cartItemId: 장바구니 도서 id,
        bookId: 도서 id
        title: “도서 제목”,
        summary: “도서 요약”,
        count: 수량,
        price: 가격
    },
   
]

 

장바구니 삭제

URI에  bookId가 아니라 cartItemId가 더 맞는 것 아닌가 싶긴 한데 일단 이대로 간다.

Method DELETE
URI /cart/{bookId}
HTTP Status Code 성공(200)
Request Body  
Response Body  

 

 

주문 API

장바구니에서 선택한 상품 목록 조회

장바구니에서 넘어오는 페이지이므로 장바구니 도서 id를 사용한다.

Method GET
URI /
HTTP Status Code 성공(200)
Request Body  
Response Body [
    {
        cartItemId: 장바구니 도서 id,
        bookId: 도서 id
        title: “도서 제목”,
        summary: “도서 요약”,
        count: 수량,
        price: 가격
    },
   
]