Review System API

리뷰 시스템 API

개요

어떤 서비스(예: 쇼핑몰, 레스토랑 예약, 콘텐츠 플랫폼 등)에서 사용자들이 상품/콘텐츠에 대한 리뷰를 작성, 조회, 수정, 삭제할 수 있는 API를 설계해보자. 리뷰에는 평점과 텍스트가 포함되며, 리뷰에 대한 댓글 기능도 존재한다.

요구사항

  • 리뷰 작성 API

    • 사용자 ID, 상품 ID, 평점(1~5), 리뷰 내용 입력

  • 리뷰 조회 API

    • 특정 상품에 달린 리뷰 목록 조회 (페이징 지원)

    • 정렬 방식(최신순/평점순) 지원

  • 리뷰 수정 및 삭제 API

    • 작성자 본인만 수정/삭제 가능

  • 댓글 작성/조회 API

    • 리뷰에 달린 댓글 작성/조회 기능

    • 댓글은 대댓글을 지원하지 않음 (1 depth)

  • 리뷰 통계 API

    • 상품에 대한 평균 평점, 총 리뷰 수 조회

asdfasdf

1. 엔드포인트 설계

  • 리뷰 작성(POST) - /posts/{postId}/reviews

  • 리뷰 조회(GET) - /posts/{postId}/reviews?page={page}&size={size}&sort={sort}

  • 리뷰 수정(PUT) - /reviews/{reviewId}

  • 리뷰 삭제(DELETE) - /reviews/{reviewId}

  • 댓글 작성(POST) - /reviews/{reviewId}/comments

  • 댓글 조회(GET) - /reviews/{reviewId}/comments?page={page}&size={size}

  • 리뷰 통계(GET) - /posts/{postId}/stats

2. 요청/응답 설계

  • 리뷰 작성(POST) - /posts/{postId}/reviews

  • 리뷰 조회(GET) - /posts/{postId}/reviews?page={page}&size={size}&sort={sort}

  • 리뷰 수정(PUT) - /reviews/{reviewId}

  • 리뷰 삭제(DELETE) - /reviews/{reviewId}

  • 댓글 작성(POST) - /reviews/{reviewId}/comments

  • 댓글 조회(GET) - /reviews/{reviewId}/comments?page={page}&size={size}

  • 리뷰 통계(GET) - /posts/{postId}/stats

3. DB 스키마 설계

  • user

    • user_id. BIGINT, PK. 유저 id

  • post

    • post_id. BIGINT, PK. 게시글 id

    • user_id. BIGINT, FK. 유저 id

    • content. TEXT. 내용

  • review

    • review_id. BIGINT, PK. 리뷰 id

    • user_id. BIGINT, FK. 유저 id

    • post_id. BIGINT, FK. 게시글 id

    • score. SMALLINT. 점수

    • content. TEXT. 내용

  • comment

    • comment_id. BIGINT, PK. 댓글 id

    • user_id. BIGINT, FK. 유저 id

    • review_id. BIGINT, FK. 리뷰 id

    • content. TEXT. 내용

4. 아키텍처 설계

  • API 서버(SpringBoot)

    • 사용자 요청 처리

    • DB와 Redis 캐시 연동

  • 데이터베이스 (MySQL)

    • 사용자, 작업 정보 저장

  • 캐시 서버 (Redis)

    • 리뷰, 댓글, 통계 같은 GET 방식의 API 캐싱

Last updated