내일배움캠프 38일차 TIL - 뉴스피드 프로젝트

2024. 6. 12. 00:00·⛺스파르타코딩클럽

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 명세서

https://goldenrod-foxtail-d8b.notion.site/ba2533c176864fe4a6aae7ba5c4795f1?v=68d5318fbf9441578ca29b114f10a142&pvs=4

 

API 명세서 | Notion

Built with Notion, the all-in-one connected workspace with publishing capabilities.

goldenrod-foxtail-d8b.notion.site


2. 전체 구현 기능

회원 => 회원가입, 회원탈퇴, 로그인, 로그아웃 ( 인증 / 인가 )

프로필 => 마이페이지 조회, 수정 및 비밀번호 수정, 이메일 가입 및 인증 기능

게시판( me )  => 게시글 작성, 게시글 조회, 게시글 수정, 게시글 삭제, 좋아요 등록, 좋아요 취소

게시글 댓글 => 댓글 추가, 댓글 전체 조회, 댓글 수정, 댓글 삭제

( 4개의 파트로 나눠서 기능 구현을 진행하였습니다. )


3. 내가 맡은 기능

1. 게시판 CRUD

2. 게시글 좋아요 기능

3. CustomException 구현과 ExceptionHandler를 이용한 예외처리

 

 

1. 게시판 CRUD

게시글 등록 api

위의 코드에서 javadocs를 이용하여 해당 메서드의 기능을 파악하기 쉽게 만들었으며, HTTP메서드의 역할을 명확하게 하여 RESTful하게 기능 구현을 할 수 있었다.

 

2. 게시글 좋아요 기능

Entity @UniqueConstraint => DB 제약 조건

한 회원이 특정 게시글의 좋아요를 여러번 누르지 못하게 막기 위해 Entity클래스에서 @UniqueConstraint 애너테이션을 이용하여 두 개의 컬럼을 묶어 테이블 생성 시점에 Unique 제약조건을 DB단에서 걸어주었습니다.

 

DB 예외 처리

DB의 제약조건으로 인해 중복값이 들어온다면 데이터의 무결성 위반으로 인해 나타나는 DataIntegrityViolationException 예외가 발생하므로 해당 예외처리를 위해 알아보기 쉽게 CustomExcpetion 클래스 하나를 만들어 예외를 처리해 주었습니다. 커스텀을 해서 만든 이유는 해당 무결성 위반 예외가 다른 곳에서도 터질 경우를 대비하여 해당 예외가 무엇인지를 명확하게 알려주기 위해서 만들게 되었습니다.

 

3. CustomException 구현과 ExceptionHandler를 이용한 예외처리

Exception 패키지 구조 & CostomException

@RestControllerAdvice 애너테이션을 ElementType이 TYPE인 클래스 영역에 두었고, @ExceptionHandler애너테이션을 이용해 예외를 핸들링 해주었습니다. 예외가 터지면 이제 해당 클래스로 무조건 보내지며 발생한 예외에 맞는 메서드가 호출이 되도록 하였고, 예외를 커스텀하여 예외에 대한 내용을 상세하게 응답 바디에 담아서 보내주었습니다.

해당 예외가 무엇인지를 명확하게 알려주기 위해 javadoc 주석을 이용하여 예외에 대한 내용을 작성해 두었습니다.

 

ERD

 

프로젝트 전체적인 설계

피그마를 활용하여 전체적인 프로젝트를 팀원들과 공유하며 설계하였습니다.

 

https://www.figma.com/board/spnZ5eCnVNSCvKHZlIMJlZ/%EB%89%B4%EC%8A%A4%ED%94%BC%EB%93%9C-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-(13%EC%9D%BC%EC%9D%98-%EA%B8%88%EC%9A%94%EC%9D%BC)?node-id=0-1&t=q0LfgUrpOHXUzAbd-1

 

Figma

Created with FigJam

www.figma.com

 

Git-Hub

 

Git-Hub Fork

깃허브의 포크 기능을 활용하여 프로젝트를 진행하였습니다.

포크 기능을 활용하여 각 팀원들의 개인 Repo에서 작업을 진행할 수 있어서 충돌을 최소화 할 수 있던 점이 좋았지만 단점으로는 깃허브의 포크 때문에 한번 더 

 

 
 
 

 

회고

 

'⛺스파르타코딩클럽' 카테고리의 다른 글

내일배움캠프 40일차 TIL - Spring Test  (0) 2024.06.13
내일배움캠프 39일차 TIL - 소셜 로그인 API(OAuth)  (2) 2024.06.12
내일배움캠프 37일차 TIL - 시큐리티 수정 중  (2) 2024.06.10
내일배움캠프 36일차 TIL - 스프링 빈 라이프사이클  (0) 2024.06.07
내일배움캠프 35일차 TIL - Enum  (2) 2024.06.05
'⛺스파르타코딩클럽' 카테고리의 다른 글
  • 내일배움캠프 40일차 TIL - Spring Test
  • 내일배움캠프 39일차 TIL - 소셜 로그인 API(OAuth)
  • 내일배움캠프 37일차 TIL - 시큐리티 수정 중
  • 내일배움캠프 36일차 TIL - 스프링 빈 라이프사이클
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (167)
      • 🎓방송통신대학교 (33)
        • ⚙️컴퓨터의 이해 (11)
        • 💻컴퓨터과학 개론 (3)
        • 🔢자료구조 (4)
        • 🌍유비쿼터스 컴퓨팅 (11)
        • 🏛️세계의정치와경제 (3)
        • 🖥️컴퓨터과학과 (1)
      • 🛠️Backend (58)
        • 📚백엔드 공부 (4)
        • ☕Java (23)
        • 🌳Spring (13)
        • ⚙️C (2)
        • ⚡Python (13)
        • JavaScript (1)
        • 🛢️Database (0)
        • Algorithm Problem Solving (2)
      • 🌐 Network (7)
        • 📜HTTP (7)
      • 🚀DevOps (1)
      • ⛺스파르타코딩클럽 (64)
      • 정보 (2)
      • 정리가 필요한 글 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    Java
    방송통신대학교
    유비쿼터스 컴퓨팅개론
    유비쿼터스
    컴퓨터의 이해
    Spring Framework
    Python
    클라우드
    스프링
    방통대
    파이썬
    입출력
    컴파일러
    spring
    유비쿼터스 컴퓨팅
    자료구조
    운영체제
    자바
    방송대
    배열
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
내일배움캠프 38일차 TIL - 뉴스피드 프로젝트
상단으로

티스토리툴바