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}당 도서 수&currentPage={현재 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 은 이 안에 포함된다.