리뷰
리뷰
요구사항
- 상품 상세에서 리뷰 클릭했을 때 넘어오는 페이지
- 별점, 내용
- 무한 스크롤
요구사항 더 캐묻기
- 리뷰 수정, 삭제가 가능한지? 가능하다면 기준이 무엇인지?
- 댓글을 달 수 있는지? 나중에 생길수는 있는건지?
- 상품을 여러 번 산다면 리뷰는 여러 번 적을수 있는지?
- 환불을 한다면 리뷰는 어떻게 할건지?
- 고객이 탈퇴한다면 리뷰는 어떻게 할건지?
- 리뷰는 몇점이 만점인지? 소수점도 있는지?
- 리뷰는 몇 개씩 보여줄 것인지?
- 평균 점수는 전체 리뷰에 대한 평균인지? 특정 기간에 대한 평균인지?
- 리뷰 작성 리워드 정책은 어떻게 되는지?
- 리뷰 삭제 시, 리워드 준걸 어떻게 할 것인지?
- 무한 스크롤은
커서방식인지?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
PUT /v1/reviews/{reviewId}
| Path Parameter | 설명 |
|---|---|
| reviewId | 리뷰 고유 아이디 |
| Parameter | 설명 |
|---|---|
| rate | 별점 |
| content | 리뷰 내용 |
- 리뷰 수정 가능한 조건인지 체크
- 리뷰 수정
리뷰 삭제
1
DELETE /v1/reviews/{reviewId}
| Path Parameter | 설명 |
|---|---|
| reviewId | 리뷰 고유 아이디 |
- 리뷰 삭제
- 포인트 반납
개념도
ReviewTarget: 현재는 상품 뿐이지만, 상품 옵션, 판매자 등등 확장성을 고려한 부수 개념ReviewContent: 별점, 내용에 대한 부수 개념
- 해당 주문 건에 대한 리뷰를 작성했는지 체크를 위해 리뷰는 주문을 의존함
- 리뷰 작성시 리워드를 지급해야 하므로 주문은 포인트를 의존함
상품에 대한 리뷰인데 왜 상품은 개념도에 없는가?
ReviewTarget에 데이터로 상품을 가지고 있는 것이지 논리적으로 상품에 의존하고 있지는 않기 때문입니다.
참고
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

