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를 사용한다. 일단 모든 도메인끼기 단방향으로 연결을 해주었고, 구현중에 필요할 경우만 양방향으로 연결하기로 했다.
'토이프로젝트 > 리뷰어(영화 리뷰 사이트)' 카테고리의 다른 글
비즈니스 로직 구현과 단위테스트 (0) | 2022.10.28 |
---|---|
13일차 - 테스트 DB 구성 및 domain단 구현 (0) | 2022.10.27 |
5~12일차 - 프론트엔드 페이지 구현 (0) | 2022.10.26 |
3~4일차 프론트엔드 페이지 구현 (0) | 2022.10.12 |
2일차 - erd 설계 (0) | 2022.10.01 |