데브코스/도서 판매 쇼핑몰
API 설계
hxx_1
2024. 9. 27. 18:10
회원 API
1. 회원 가입
Method | POST |
URI | /users/join |
HTTP status code | 성공: 201 |
Request Body | { email: "사용자가 입력한 이메일", password: "사용자가 입력한 비밀번호" } |
Response Body |
2. 로그인
Method | POST |
URI | /users /login |
HTTP status code | 성공: 200 |
Request Body | { email: "사용자가 입력한 이메일", password: "사용자가 입력한 비밀번호" } |
Response Body | JWT Token |
3. 비밀번호 초기화 요청
Method | POST |
URI | /users /reset |
HTTP status code | 성공: 200 |
Request Body | { email: "사용자가 입력한 이메일" } |
Response Body |
4. 비밀번호 초기화(=수정)
Method | PUT |
URI | /users /reset |
HTTP status code | 성공: 200 |
Request Body | { password: "사용자가 입력한 비밀번호" } |
Response Body |
도서 API
1. 전체 도서 조회
// 이미지 경로 n개씩 보내기
Method | GET |
URI | /books?limit={page}당 도서 수¤tPage={현재 page} |
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. 개별 도서 조회
// 이미지 경로
Method | GET |
URI | /books/{bookId} |
HTTP status code | 성공: 200 |
Request Body | { email: "사용자가 입력한 이메일", password: "사용자가 입력한 비밀번호" } |
Response Body | { id: "도서 id", title: "도서 제목", category: "카테고리", format: "포맷", isbn: "isbn", summary: "요약 설명" , description: "상세 설명", author: "작가 이름" , pages:"쪽수", index:"목차", price: "가격", likes: "좋아요 수", liked: boolean, pubDate:"출간일" } |
3. 카테고리별 도서 목록 조회
// new: true => 신간 조회( 기준: 출간일 30일 이내)
// 이미지 경로 8개씩 보내기
// 카테고리 id 어떻게 보내줄지 생각하기
Method | GET |
URI | /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 |
URI | /likes/{bookId} |
HTTP status code | 성공: 200 |
Request Body | // 로그인할 때 받은 token > header "Authorization" // payload 값을 읽을 수 있음 = 사용자의 id를 읽어낼 수 있음 |
Response Body |
2. 좋아요 취소
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 | [ { id: 장바구니 도서 id, bookId:도서 id, title: "도서 제목" , summary: "도서 요약", count: 수량, price: 가격 }, { id: 장바구니 도서 id, bookId:도서 id, title: "도서 제목" , summary: "도서 요약", count: 수량, price: 가격 }, ... ] |
3. 장바구니 도서 삭제
Method | DELETE |
URI | /cart/{bookId} |
HTTP status code | 성공: 200 |
Request Body | |
Response Body |
4. (장바구니에서 선택한) 주문 "예상" 상품 목록 조회
Method | GET |
URI | /cart |
HTTP status code | 성공: 200 |
Request Body | [ cartItemId, cartItemId, ... ] |
Response Body | [ { cartItemId: 장바구니 도서 id, bookId:도서 id, title: "도서 제목" , summary: "도서 요약", count: 수량, price: 가격 }, { cartItemId: 장바구니 도서 id, bookId:도서 id, title: "도서 제목" , summary: "도서 요약", count: 수량, price: 가격 }, ... ] |
결제 API
1. 결제하기 (= 주문하기, 주문 등록, 데이터베이스 주문 INSERT, 장바구니에서 주문된 상품은 DELETE)
Method | POST |
URI | /orders |
HTTP status code | 성공: 200 |
Request Body | { items: [ { cartItemId: 장바구니 도서 id, bookId : 도서 id, count: 수량 }, { cartItemId: 장바구니 도서 id, bookId : 도서 id, count: 수량 }, ], delivery: { address:"주소", receiver: "이름", contact: "010-0000-0000" }, totalPrice: 총 금액 } |
Response Body |
2. 주문 목록(내역) 조회
Method | GET |
URI | /orders |
HTTP status code | 성공: 200 |
Request Body | |
Response Body | [ { order_id: 주문 id, created_at : "주문 일자" , delivery : { address: "주소", receiver: "이름", contact: "전화번호" }, bookTitle: "대표 책 제목", totalPrice: 결제 금액, totalCount: 총 수량 } ] |
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: 수량 }, .... ] |
URI vs URL
URI
: Uniform Resource Identifier (통합 자원 식별자)
: naver.com 은 URI , 반면 https://www.naver.com/ 는 URL 이다.
URL
: Uniform Resource Locator
: 식별자 + 위치
: 네트워크 상에서 통합 자원의 "위치" 를 나타내기 위한 규약
: 특정 웹 페이지의 주소에 접속하기 위해서는 웹 사이트의 주소 뿐만 아니라 프로토콜(https,http,sftp, smp 등)을 함께 알아야 접속이 가능한데, 이를 모두 나타내는 것이 URL이다.
⚠️URL 은 일종의 URI 이다. 즉, URI 가 더 포괄적인 개념이며 URL 은 이 안에 포함된다.