본문 바로가기

토이프로젝트/리뷰어(영화 리뷰 사이트)

12일차 - api 명세 및 도메인 구현

api 명세

구현 중요도 도메인 기능 method url 설명
O 1 User 로그인 post /login  
O 1   로그아웃 get /logout  
O 1   회원가입 post /signup  
O 1   회원가입 중복확인 post /validity_checks/email 회원가입 시 이메일 중복확인
O       post /validity_checks/nickname 회원가입 시 닉네임 중복확인
O     비밀번호 확인 post /validity_checks/password 비밀번호 타당성 확인
O 2   사용자 정보 get /accounts/{userId} 사용자 정보조회
O 2     put /accounts/email 사용자 이메일 수정
O 2     put /accounts/nickname 사용자 닉네임 수정
O 2     put /accounts/password 사용자 비밀번호 수정
  2     put /accounts/profile_image 사용자 사진 수정
O 2     get /accounts/{userId}/reviews 사용자 작성 리뷰 조회
O 2     get /accounts/{userId}/ratings 사용자 작성 평가 조회
O 2     get /accounts/{userId}/comments 사용자 작성 리뷰댓글 조회
O 2     get /accounts/{userId}/favorites 사용자 즐겨찾기 목록 조회
O 1 Movie 영화 조회 get /movies 영화 목록 조회
O 1     get /movies/{movieId} 영화 상세조회
O 1   영화 리뷰 get /movies/{movieId}/reviews 영화 리뷰 조회
O 2   영화 평가 get /movies/{movieId}/ratings 영화 평가 조회
O 2     post /movies/{movieId}/ratings 영화 평가 작성
O 3 Rating 평가 좋아요 post /rating/{ratingId}/like 영화 평가 좋아요
O 3   평가 싫어요 post /rating/{ratingId}/dislike 영화 평가 싫어요
  3 Movie 영화 검색 get /search/movies?type={}&value={} 영화 검색
O 1 Review 리뷰 조회 get /reviews 리뷰 목록 조회
  3   리뷰 검색 get /reviews?type={}&value={} 리뷰 검색
O 1   리뷰 상세조회 get /reviews/{reviewId} 리뷰 상세 조회
O 1   리뷰 작성 post /reviews 리뷰 작성
O 2 ReviewComment 리뷰 댓글 조회 get /reviews/{reviewId}/comments 리뷰 댓글 조회

 

 

패키지 설계

본격적인 구현을 시작했다. 전체적인 패키지 구조를 설계하고, 도메인 클래스를 구현했다.

 

패키지 구조는 다른 블로그를 참고해서 설계했다.

https://velog.io/@haron/Spring-Project-Structure

 

[Spring] Project Structure

각 계층을 대표하는 디렉터리를 기준으로 코드들이 구성한다.해당 프로젝트에 이해가 상대적으로 낮아도 전체적인 구조를 빠르게 파악할 수 있다.내가 참여하지 않은 프로젝트 코드를 봤을 때,

velog.io

 

 

├─domain
│  ├─actor
│  │  ├─api
│  │  ├─domain
│  │  ├─dto
│  │  │  ├─request
│  │  │  └─response
│  │  ├─exception
│  │  ├─repository
│  │  └─service
│  ├─favorite
│  ├─movie
│  ├─rating
│  ├─rating_like
│  ├─review
│  ├─review_comment
│  ├─review_comment_like
│  ├─review_like
│  └─user
├─global
│  ├─common
│  ├─config
│  └─error
└─infra
    └─s3

도메인 폴더들은 모두 actor와 같은 구조로 설계되어있다.

고민중인 부분은 review와 관련된 도메인이 4가지나 되는데 이걸 같은 도메인 취급해아할지의 문제이다.

테이블도 분리되어있기 때문에 도메인으로는 분리하고, 나중에 모듈로 분리 가능하다면 모듈이 나을 것 같다.

 

 

그리고 actor가 Movie에 완전히 종속되기 때문에 Movie와 Actor를 묶어봐야겠다.

 

 

도메인 구현

도메인에서 Jpa를 사용한다. 일단 모든 도메인끼기 단방향으로 연결을 해주었고, 구현중에 필요할 경우만 양방향으로 연결하기로 했다.