Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[2주차] 기본 과제 & 심화 과제 #4

Merged
merged 22 commits into from
Nov 5, 2023
Merged

[2주차] 기본 과제 & 심화 과제 #4

merged 22 commits into from
Nov 5, 2023

Conversation

SunwoongH
Copy link
Member

@SunwoongH SunwoongH commented Oct 26, 2023

Related Issue ☃️

close #3

Description ✔️

  • 2주차 세미나 이론과 코드를 복습하였습니다.
  • 도메인형 패키지 구조로 설계하였습니다.
  • 회원가입, 회원 조회, 전체 회원 조회, 회원 수정, 회원 삭제 API를 구현하였습니다.
  • DTO를 record로 구현하였습니다.
  • 전체 회원 조회 API를 페이징 처리하였습니다.
  • nickname 속성으로 회원을 고유하게 구분할 수 있도록 설계하였습니다. 이에 따라 회원가입 절차에서 회원가입을 진행하고자 하는 회원의 nickname 속성의 고유 여부를 검증하는 로직을 추가하였습니다.
  • API 응답 스펙을 일관되게 유지하기 위해 공통 API 응답 클래스인 ApiResponse를 구현하였습니다.
  • ApiResponse 클래스에서 성공 & 실패 응답을 한번에 핸들링할 수 있도록 설계하였습니다.
  • Http status와 message를 SuccessStatus와 ErrorStatus enum 클래스로 관리할 수 있도록 설계하였습니다.
  • RuntimeException을 상속받은 BusinessException을 활용하여 예외 처리를 진행하였습니다.
  • 주어진 요구사항에서 발생할 수 있는 예외 케이스를 고려하여 BusinessException을 상속받은 ConflictException, EntityNotFoundException, InvalidValueException 클래스를 구현하였고 해당 Exception과 ErrorStatus를 적절히 조합하여 예외를 처리하였습니다.
  • controller에서 던져지는 예외를 전역적으로 핸들링하기 위한 controller advice 클래스를 구현하였습니다.
  • controller advice 클래스인 GlobalExceptionHandler는 405 Exception, BusinessException, Exception을 핸들링합니다.
스크린샷 2023-10-26 오후 7 04 24 스크린샷 2023-10-26 오후 7 05 19 스크린샷 2023-10-26 오후 7 05 05 스크린샷 2023-10-26 오후 7 05 54 스크린샷 2023-10-26 오후 7 06 12

Copy link
Member

@kseysh kseysh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드 보면서 APIResponse, 페이징을 하는 이유 같은 것에 대해서 다시 알아보고 공부하며 많이 배우게 되었습니다.
너무 깔끔한 코드인 것 같아요 고생하셨습니다!!

Copy link
Member

@hysong4u hysong4u left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

공통 API 응답 클래스를 만든 것도 좋은 아이디어 같고, 레코드 사용한 것도 좋은 거 같습니다! 그리고 다양한 예외처리 고려해서 구현한 것도 좋은 거 같아요~~ 또 개인적으로는 커밋메시지 기능마다 세세하게 나눠놓은 거 보는 입장에서 더 이해하기 편한 거 같아욥 오늘도 많이 배워갑니다 고생하셨어요!

@SunwoongH SunwoongH merged commit a11b986 into develop Nov 5, 2023
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[2주차] 기본 과제 & 심화 과제
3 participants