프로젝트 1-1 ~ 1-6 (API 설계)

Develop Kim·2024년 9월 27일

programmers

목록 보기
19/40

프로젝트: Node.js 기반의 REST API 구현

1 설계를 직접 해보자

1-1 프로젝트 소개, 프론트엔드 훑어보기

1️⃣ 프로젝트로 무엇을 만들까?

  • 프로젝트 주제는 도서 쇼핑몰, 프론트엔드와 백엔드를 모두 구현하도록 할 것

  • 아래와 같은 기획대로 프로젝트를 구현해보도록 할 것

  • API 설계 먼저 해보자



1-2 회원 API 설계

1️⃣ 회원가입 API

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

2️⃣ 로그인 API

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

3️⃣ 비밀번호 초기화 요청 API

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

4️⃣ 비밀번호 초기화(= 수정) API

  • Method : PUT
  • URL : /reset
  • HTTP status code : 성공 200
  • Request Body :
    (
    password : "사용자가 입력한 비밀번호"
    )
  • Response Body :



1-3 도서 API 설계

1️⃣ 전체 상품 조회 API // 이미지 주소, 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️⃣ 개별 도서 조회 API

  • Method :GET
  • URL : /books/{bookId}
  • HTTP status code : 성공 200
  • Request Body :
  • Response Body :
{
    id : 도서 id,
    title : "도서 제목",
    category : 카테고리 id,
    formet : "포멧",
    isbn : isbn,
    summary : "요약 설명",
    description : "상세 설명",
    author : "도서 작가",
    pages : 쪽 수,
    price : 가격,
    likes : 좋아요 수,
    liked : boolean,
    pubDate : "출간일"
}

3️⃣ 카테고리별 도서 목록 조회 API // 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 : "출간일"
    },
    ...
]



1-4 좋아요 API 설계 1차

1️⃣ 좋아요 추가 API // 상세(1) 참고

  • Method : PUT (업데이트)
  • URL : /likes/{bookId}
  • HTTP status code : 성공 200
  • Request Body :
  • Response Body :

👉 회원은 자기가 좋아요한 목록을 가지고 있을 것임 때문에 회원이 가지고 있는 목록에 좋아요 여부를 넣는 것이 나을 것 같음 ERD 그려보고 다시 생각해보자




1-5 장바구니 API 설계

1️⃣ 장바구니 담기 API // 장바구니 참고

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

2️⃣ 장바구니 조회 API // 장바구니 참고

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

3️⃣ 장바구니 제거 API // 장바구니 참고

  • Method : DELETE
  • URL : /cart/{bookId}
  • HTTP status code : 성공 200
  • Request Body : // URL에서 보내서 딱히 필요 없음
  • Response Body :



1-6 주문 API 구현

1️⃣ 장바구니에서 선택한 상품목록 조회 API // 주문서 작성 참고
// 장바구니에서 주문하기를 누르면 주문서 작성으로 넘어가게 됨

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



profile
김개발의 개발여정

0개의 댓글