포스트

리뷰

리뷰

요구사항

  • 상품 상세에서 리뷰 클릭했을 때 넘어오는 페이지
  • 별점, 내용
  • 무한 스크롤

요구사항 더 캐묻기

  • 리뷰 수정, 삭제가 가능한지? 가능하다면 기준이 무엇인지?
  • 댓글을 달 수 있는지? 나중에 생길수는 있는건지?
  • 상품을 여러 번 산다면 리뷰는 여러 번 적을수 있는지?
  • 환불을 한다면 리뷰는 어떻게 할건지?
  • 고객이 탈퇴한다면 리뷰는 어떻게 할건지?
  • 리뷰는 몇점이 만점인지? 소수점도 있는지?
  • 리뷰는 몇 개씩 보여줄 것인지?
  • 평균 점수는 전체 리뷰에 대한 평균인지? 특정 기간에 대한 평균인지?
  • 리뷰 작성 리워드 정책은 어떻게 되는지?
  • 리뷰 삭제 시, 리워드 준걸 어떻게 할 것인지?
  • 무한 스크롤은 커서 방식인지? offset, limit 방식인지? (프론트와의 협의)
  • 등등

구현 시, 고려사항

  • 리뷰가 장기적으로 확장될 수 있음 (현재는 상품뿐이지만 상품 옵션, 판매자 등에 대한 리뷰를 남길 수도 있음)
  • 리뷰에 대한 히스토리 테이블이 필요

API

리뷰 조회

1
GET /v1/reviews
Parameter설명
targetType타겟 타입(현재는 상품)
targetId타겟 고유 아이디(현재는 상품 고유ID)
offset시작 순번
limit가져올 개수
  • targetId에 해당 하는 리뷰 조회

리뷰 등록

1
POST /v1/reviews
Parameter설명
targetType타겟 타입(현재는 상품)
targetId타겟 고유 아이디(현재는 상품 고유ID)
rate별점
content리뷰 내용
  1. 리뷰를 등록 가능한 상태인지 체크
  2. 리뷰 등록
  3. 포인트 지급

리뷰 수정

1
PUT /v1/reviews/{reviewId}
Path Parameter설명
reviewId리뷰 고유 아이디
Parameter설명
rate별점
content리뷰 내용
  1. 리뷰 수정 가능한 조건인지 체크
  2. 리뷰 수정

리뷰 삭제

1
DELETE /v1/reviews/{reviewId}
Path Parameter설명
reviewId리뷰 고유 아이디
  1. 리뷰 삭제
  2. 포인트 반납

개념도

  • ReviewTarget: 현재는 상품 뿐이지만, 상품 옵션, 판매자 등등 확장성을 고려한 부수 개념
  • ReviewContent: 별점, 내용에 대한 부수 개념
  • 해당 주문 건에 대한 리뷰를 작성했는지 체크를 위해 리뷰는 주문을 의존함
  • 리뷰 작성시 리워드를 지급해야 하므로 주문은 포인트를 의존함

상품에 대한 리뷰인데 왜 상품은 개념도에 없는가?

ReviewTarget데이터로 상품을 가지고 있는 것이지 논리적으로 상품에 의존하고 있지는 않기 때문입니다.

참고

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.