728x90
프로젝트 설정
- JAVA 버전 : 17
- 빌드 : Gradle
- Spring Boot : 3.0.5
- Spring Security : 6.0.2
<ToyProject Step2> RESTful API를 기반으로 고도화하는 것을 목적으로 진행
- 추가 기능을 수행할 수 있는 RESTful API와 ERD를 설계
- 데이터베이스 연동은 JPA를 활용하였음
📌 API 문서
📌 Postman 실행 화면
📌 세부 기능 구현
Domain Driven Design (DDD)를 통한 도메인 모델 분리
1. 사용자 인증 API 구현
1-1. 회원가입
- 로그인
- 로그아웃
- 토큰 재발급
1-2. 사용자 API 구현
- 로그인한 사용자 정보 조회
- 멤버 탈퇴
2. 댓글 기능 구현
2-1. 댓글 등록
- 로그인한 회원은 각 여행에 댓글을 등록하고 저장
- 등록한 댓글은 여행의 tripList로 저장
- 조회 시 N+1 문제를 해결하기 위하여 FETCH JOIN 사용
- 모든 사람이 모든 여행에 댓글 작성 가능
2-2. 댓글 조회 (사용자별)
- 본인이 작성한 댓글만 모아서 조회 가능(마이페이지)
- 다른 사람이 작성한 댓글은 조회 불가능(다른 사람 마이페이지에 접근 불가)
2-3. 댓글 삭제
- 본인이 작성한 댓글은 삭제 가능
- 다른 사람이 작성한 댓글은 삭제 불가능
2-4. 댓글 수정
- 댓글 삭제와 동일
3. 좋아요 기능 구현
3-1. 좋아요 추가 기능
- 자신의 여행에 좋아요 추가
- 다른 사람의 여행에 좋아요 추가
- 이미 좋아요를 추가했다면 좋아요 추가 불가능
3-2. 좋아요 삭제 기능
- 자신이 좋아요 했던 여행에 대한 좋아요 삭제
- 이미 해당 좋아요를 삭제했다면 좋아요 삭제 불가능
3-3. 자신이 좋아요 누른 여행 목록 조회
- 자신이 좋아요 했던 여행 목록 조회
- 여행 정보 리스트로 출력
3-4. 여행조회시 해당 여행에 대한 좋아요 수도 함께 조회
- 여행 엔티티에서 참조하는 좋아요 리스트의 Batch Size를 100 으로 설정
- 쿼리 실행 시 WHERE 절의 IN 조건을 사용하여 N+1 문제를 해결
4. 검색 기능 및 Open API 활용 위치 정보 표현 및 인가 관리
4-1. 위치 정보 표현
- 오픈 API를 활용하여 위치 정보 표현
4-2. 인가 관리
- 여행 및 여정 조작 시 인증된 회원에 따른 인가 관리
4-3. 검색기능
- 전체 여행 조회 시 검색조건(여행 이름)으로 특정 여행 조회
📌 ERD
728x90
'Backend' 카테고리의 다른 글
미니프로젝트 - erd 작성하기 (1) | 2023.12.04 |
---|---|
관광정보 API 사용하기 (0) | 2023.11.19 |
[패캠] 패스트캠퍼스X야놀자: 토이 프로젝트 2단계 (0) | 2023.11.03 |
Swagger 사용하기 (0) | 2023.10.26 |
[MYSQL] Real MySQL 8.0 5장 정리 (1) | 2023.10.06 |