240611
프로젝트 목차
● 1. API 명세서
● 2. 전체 구현 기능
● 3. 내가 맡은 기능
● 3 - 1. 게시글 CRUD
● 3 - 2. 게시글 좋아요
● 3 - 3. CustomException 구현과 ExceptionHandler를 이용한 예외처리
● 4. ERD
● 5. 프로젝트 전체적인 설계 ( Figma )
뉴스피드 프로젝트
기간 : 24/06/04 ~ 24/06/10 ( 주말 / 공휴일 제외한 실제 구현 기간 4일 )
인원 : 4명
1. API 명세서
2. 전체 구현 기능
회원 => 회원가입, 회원탈퇴, 로그인, 로그아웃 ( 인증 / 인가 )
프로필 => 마이페이지 조회, 수정 및 비밀번호 수정, 이메일 가입 및 인증 기능
게시판( me ) => 게시글 작성, 게시글 조회, 게시글 수정, 게시글 삭제, 좋아요 등록, 좋아요 취소
게시글 댓글 => 댓글 추가, 댓글 전체 조회, 댓글 수정, 댓글 삭제
( 4개의 파트로 나눠서 기능 구현을 진행하였습니다. )
3. 내가 맡은 기능
1. 게시판 CRUD
2. 게시글 좋아요 기능
3. CustomException 구현과 ExceptionHandler를 이용한 예외처리
1. 게시판 CRUD
위의 코드에서 javadocs를 이용하여 해당 메서드의 기능을 파악하기 쉽게 만들었으며, HTTP메서드의 역할을 명확하게 하여 RESTful하게 기능 구현을 할 수 있었다.
2. 게시글 좋아요 기능
한 회원이 특정 게시글의 좋아요를 여러번 누르지 못하게 막기 위해 Entity클래스에서 @UniqueConstraint 애너테이션을 이용하여 두 개의 컬럼을 묶어 테이블 생성 시점에 Unique 제약조건을 DB단에서 걸어주었습니다.
DB의 제약조건으로 인해 중복값이 들어온다면 데이터의 무결성 위반으로 인해 나타나는 DataIntegrityViolationException 예외가 발생하므로 해당 예외처리를 위해 알아보기 쉽게 CustomExcpetion 클래스 하나를 만들어 예외를 처리해 주었습니다. 커스텀을 해서 만든 이유는 해당 무결성 위반 예외가 다른 곳에서도 터질 경우를 대비하여 해당 예외가 무엇인지를 명확하게 알려주기 위해서 만들게 되었습니다.
3. CustomException 구현과 ExceptionHandler를 이용한 예외처리
@RestControllerAdvice 애너테이션을 ElementType이 TYPE인 클래스 영역에 두었고, @ExceptionHandler애너테이션을 이용해 예외를 핸들링 해주었습니다. 예외가 터지면 이제 해당 클래스로 무조건 보내지며 발생한 예외에 맞는 메서드가 호출이 되도록 하였고, 예외를 커스텀하여 예외에 대한 내용을 상세하게 응답 바디에 담아서 보내주었습니다.
해당 예외가 무엇인지를 명확하게 알려주기 위해 javadoc 주석을 이용하여 예외에 대한 내용을 작성해 두었습니다.
ERD
프로젝트 전체적인 설계
피그마를 활용하여 전체적인 프로젝트를 팀원들과 공유하며 설계하였습니다.
Git-Hub
Git-Hub Fork
깃허브의 포크 기능을 활용하여 프로젝트를 진행하였습니다.
포크 기능을 활용하여 각 팀원들의 개인 Repo에서 작업을 진행할 수 있어서 충돌을 최소화 할 수 있던 점이 좋았지만 단점으로는 깃허브의 포크 때문에 한번 더
회고
'내일배움캠프 Spring 5기' 카테고리의 다른 글
내일배움캠프 40일차 TIL - Spring Test (0) | 2024.06.13 |
---|---|
내일배움캠프 39일차 TIL - 소셜 로그인 API(OAuth) (0) | 2024.06.12 |
내일배움캠프 37일차 TIL - 시큐리티 수정 중 (2) | 2024.06.10 |
내일배움캠프 36일차 TIL - 스프링 빈 라이프사이클 (0) | 2024.06.07 |
내일배움캠프 35일차 TIL - Enum (0) | 2024.06.05 |