이번에는 구성한 화면을 바탕으로 필요한 API를 설계하기 위해 포스팅을 하였습니다.
리소스를 명확하게 분리하고 HTTP 메소드를 규칙에 맞게 사용하는 것에 중점을 두고 설계하고자 했습니다.
📗 회원
회원 가입과 탈퇴는 사용자 자원을 생성하고 삭제하는 작업이므로,
각 메소드 규칙에 맞춰서 다음과 같이 생성했습니다.
# 회원 가입
POST /users
# 회원 탈퇴
DELETE /users
📗 인증
처음에는 로그인과 로그아웃도 회원 가입과 같은 URL을 사용하려고 했습니다.
하지만, 사용자 자원을 직접적으로 생성하고 삭제하지 않기 때문에
별도의 인증이라는 자원을 만들어 사용하는 것이 적합하다고 생각했습니다.
# 사용자 인증을 처리하는 요청
POST /auth/login
# 사용자 세션을 종료하는 요청
DELETE /auth/logout
# 비밀번호 찾기 요청
POST /auth/forgot-password
# 비밀번호 재설정 요청
POST /auth/reset-password
📗 카테고리
카테고리는 도서를 그룹화 해주기 위한 자원입니다.
목록을 만들기 위해 모든 카테고리를 조회할 수 있고,
카테고리의 등록과 삭제 또한 필요합니다.
# 카테고리 생성
POST /categories
# 카테고리 조회
GET /categories
# 카테고리 수정
PUT /categories/:category-id
# 카테고리 삭제
DELETE /categories/:category-id
📗 도서
도서를 관리하기 위해 필요한 자원입니다.
이 자원은 카테고리의 하위 집합으로 속해있기도 합니다.
# 도서 등록
POST /books
# 전체 도서 조회
GET /books
# 개별 도서 조회
GET /books/:id
# 도서 수정
PUT /books/:id
# 도서 삭제
DELETE /books/:id
# 카테고리 하위 도서 조회
GET /categories/:category-id/books
📗 장바구니
장바구니는 사용자와 아이템 자원과의 관계를 표현해줘야 하는 자원입니다.
사용자와의 관계를 명확히 하기 위해서 장바구니를 사용자 아이디로 구분할 수 있게 하였고,
아이템과의 관계는 하위 집합으로 만들어 설계했습니다.
# 장바구니에 아이템 추가
POST /carts/:userId/items
# 장바구니 조회
GET /carts/:userId
# 장바구니 수량 변경
PATCH /carts/:userId/items/:itemId
# 장바구니에서 아이템 삭제
DELETE /carts/:userId/items/:itemId
📗 주문
회원이 상품을 주문할 수 있도록 배송 정보와 결제 정보 등이 포함되어 있는 자원입니다.
# 주문 생성
POST /orders
# 주문 조회
GET /orders/:id
# 주문 취소
DELETE /orders/:id
URL 뿐만 아니라 요청과 응답을 보고 싶은 분들을 위해 링크를 추가해두겠습니다.
후에 수정이 일어날지도 모르지만, 개발 요구사항을 한눈에 보는 것 같아서 효율적으로 개발할 수 있을 것 같습니다.
피드백은 언제나 환영입니다.
포스트를 끝까지 봐주셔서 감사합니다!
'프로젝트' 카테고리의 다른 글
[서점 프로젝트] 서브 쿼리를 이용한 평점 업데이트 (1) | 2024.10.08 |
---|---|
[서점 프로젝트] Offset 페이지네이션 (2) | 2024.10.07 |
[서점 프로젝트] 줄거리 설명 컬럼의 자료형 고민 (0) | 2024.10.04 |
[서점 프로젝트] ERD 설계 (1) | 2024.10.02 |
[서점 프로젝트] 프로젝트 목표 설정과 화면 설계 (2) | 2024.09.30 |