프로그래머스 데브코스 웹 풀사이클 7주차 3일차

geun·2023년 12월 27일
0

데브코스

목록 보기
24/79
post-thumbnail

도서 정보 API 설계 및 구현 프로젝트/랜덤 데이터 생성 API 설계 및 구현 프로젝트

회원 API

  1. 회원 가입
Method POST
URI /join
HTTP status code 201(성공)
Request Body
{
email : "사용자가 입력한 이메일",
password : "사용자가 입력한 비밀번호"
}
Response Body
  1. 로그인
Method POST
URI /users/login
HTTP status code 200(성공)
Request Body
{
email : "사용자가 입력한 이메일",
password : "사용자가 입력한 비밀번호"
}
Response Cookie JWT Token(문자열)
  1. 비밀번호 초기화 요청
Method POST
URI /users/reset
HTTP status code 200(성공)
Request Body
{
email : "사용자가 입력한 이메일"
}
Response Body
{
email : "이메일"
}
  1. 비밀번호 초기화 (=수정)
Method PUT
URI /users/reset
HTTP status code 200(성공)
Request Body
{
email : "이전 페이지에서 입력했던 이메일"
password : "사용자가 입력한 비밀번호"
}
Response Body

도서 API

  1. 전체 도서 조회 (이미지 경로, n개씩 보내줘야함)
Method GET
URI /books?limit={page당 도서 수}&currentPage={현재 페이지}
HTTP status code 200(성공)
Request Body
Response Body // 전체 도서 목록에는 도서의 상세 정보를 포함합니다.
// 필요한 데이터만 선별하여 구현 부탁드립니다.
{
books : [
{
id : 도서 id,
title : "도서 제목",
img : 이미지 id(piksum image #id),
summary : "요약 설명",
author : "도서 작가",
price : 가격,
likes : 좋아요 수
pubDate : "출간일"
},
{
id : 도서 id,
title : "도서 제목",
img : 이미지 id(piksum image #id),
summary : "요약 설명",
author : "도서 작가",
price : 가격,
likes : 좋아요 수,
pubDate : "출간일"
}
...
],
pagination : {
currentPage : 현재 페이지,
totalBooks : 총 도서 수
}
}
  1. 개별 도서 조회
Method GET
URI /books/{bookId}
HTTP status code 200(성공)
Request Header "Authorization" : 로그인 할 때 받은 JWT TOKEN (문자열)
Request Body
Response Body
{
id : 도서 id
title : "도서 제목",
categoryName : "카테고리",
format : "포맷",
isbn : "isbn"
summary : "요약 설명",
detail : "상세 설명",
author : "도서 작가",
pages : 쪽 수
contents : "목차",
price : 가격,
likes : 좋아요 수,
liked : boolean(로그인 상태일 때만 보내줌),
pubDate : "출간일"
}
  1. 카테고리별 도서 목록 조회(이미지 경로 아직 설계 x, 카테고리 id 관련 설계 x)
    -new : true => 신간 조회(기준 : 출간일 1달 이내)
Method GET
URI /books?limit={page당 도서 수}¤tPage={현재 페이지}
&categoryId={categoryId}&new={boolean}
HTTP status code 200(성공)
Request Body
Response Body
{
books : [
{
id : 도서 id,
title : "도서 제목",
img : 이미지 id(piksum image #id),
summary : "요약 설명",
author : "도서 작가",
price : 가격,
likes : 좋아요 수
pubDate : "출간일"
},
{
id : 도서 id,
title : "도서 제목",
img : 이미지 id(piksum image #id),
summary : "요약 설명",
author : "도서 작가",
price : 가격,
likes : 좋아요 수,
pubDate : "출간일"
}
...
],
pagination : {
currentPage : 현재 페이지,
totalBooks : 총 도서 수
}
}

카테고리 API

  1. 카테고리 전체 조회
Method GET
URI /category
HTTP status code 200(성공)
Request Body
Response Body
[
{
id : 0
name : '동화'
},
{
id : 1
name : '소설'
}
...
]
  1. 카테고리 전체 조회
Method POST
URI /likes{bookId}
HTTP status code 200(성공)
Request Body
Response Body

좋아요 API

  1. 좋아요 추가
Method POST
URI /likes{bookId}
HTTP status code 200(성공)
Request Header "Authorization" : 로그인 할 때 받은 JWT TOKEN (문자열)
Request Body
Response Body
  1. 좋아요 취소
Method DELETE
URI /likes{bookId}
HTTP status code 200(성공)
Request Header "Authorization" : 로그인 할 때 받은 JWT TOKEN (문자열)
Request Body
Response Body

장바구니 API

  1. 장바구니 담기
Method POST
URI /cart
HTTP status code 201(성공)
Request Header "Authorization" : 로그인 할 때 받은 JWT TOKEN (문자열)
Request Body
{
bookId : 도서 id,
quantity : 수량
}
Response Body
  1. 내 장바구니 조회/ 선택한 장바구니 조회
Method POST
URI /cart
HTTP status code 200(성공)
Request Header "Authorization" : 로그인 할 때 받은 JWT TOKEN (문자열)
Request Body
1) 내 장바구니 조회 : Request Body 없음
2) 선택한 장바구니 상품 목록 조회
{
selected : [cartItemId, cartItemId, ...]
}
Response Body
[
{
id : 장바구니 도서 id,
bookId : 도서 id,
title : "도서 제목",
summary : "도서 요약",
quantity : 수량,
price : 가격
},
{
id : 장바구니 도서 id,
bookId : 도서 id,
title : "도서 제목",
summary : "도서 요약",
quantity : 수량,
price : 가격
},
...
]
  1. 장바구니 도서 삭제
Method DELETE
URI /cart/{cartItemId}
HTTP status code 200(성공)
Request Body
Response Body

결제 API

  1. 결제하기(주문 등록) => 장바구니에서 주문된 상품은 DELETE
Method POST
URI /orders
HTTP status code 200(성공)
Request Header "Authorization" : 로그인 할 때 받은 JWT TOKEN (문자열)
Request Body
{
orderItems : [장바구니 도서 id, 장바구니 도서 id, ....],
items : [{
bookId : 도서id,
quantity : 수량,
},
{
bookId : 도서id,
quantity : 수량,
}],
delivery : {
address : "주소"
receiver : "이름"
contact : "010-0000-0000"
},
totalQuantity : 총 수량
totalPrice : 총 금액
userId : 회원 id,
firstBookTitle : 대표 도서 제목
}
Response Body
  1. 주문 목록 조회
Method GET
URI /orders
HTTP status code 200(성공)
Request Header "Authorization" : 로그인 할 때 받은 JWT TOKEN (문자열)
Request Body
Response Body
[
{
id : 주문 id,
createdAt : "주문일자"
address : "주소"
receiver : "이름"
contact : "전화번호"
bookTitle : "대표 책 이름",
totalQuantity : 총 수량
totalPrice : 결제 금액,
},
...
]
  1. 주문 상세 상품 조회
Method GET
URI /orders/{orderId}
HTTP status code 200(성공)
Request Body
Response Body
[
{
bookId : 도서 id,
title : "도서 제목"
author : "작가명",
price : 가격, ,
quantity : 수량,
},
{
bookId : 도서 id,
title : "도서 제목"
author : "작가명",
price : 가격, ,
quantity : 수량,
}
...
]

GitHub : https://github.com/geun99/project-2-repo

0개의 댓글