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

[Feature] 공통으로 사용될 예외 처리 및 응답 생성 #1

Open
15 tasks done
kyeonkim opened this issue Feb 22, 2025 · 0 comments · May be fixed by #5
Open
15 tasks done

[Feature] 공통으로 사용될 예외 처리 및 응답 생성 #1

kyeonkim opened this issue Feb 22, 2025 · 0 comments · May be fixed by #5
Assignees
Labels
enhancement New feature or request

Comments

@kyeonkim
Copy link

kyeonkim commented Feb 22, 2025

📜 Description

현재 프로젝트에서는 예외 발생 시 일관된 응답 형식이 제공되지 않아 클라이언트가 예외 처리를 일관되게 하기 어렵다.
또한, API 응답 형식이 통일되지 않아 응답 파싱 과정에서 혼선이 발생할 가능성이 있다.

이 이슈에서는 공통 예외 처리 및 공통 응답 객체를 정의하여 일관된 API 응답을 제공하는 것을 목표로 한다.

구현할 기능

🌈 Success criteria

  • 예외 발생 시, 공통 예외 처리 핸들러가 적절한 응답을 반환한다.
  • 정상적인 요청에 대해 일관된 형태의 공통 응답 객체가 반환된다.
  • 예외 상황(예: 400 Bad Request, 404 Not Found, 500 Internal Server Error)에서 적절한 HTTP 응답 코드와 메시지를 포함한 응답이 반환된다.
  • 단위 테스트 및 통합 테스트를 작성하여 정상 응답과 예외 처리가 올바르게 동작함을 검증한다.
  • API 문서(REST Docs)에 정상 응답 및 예외 응답 형식이 반영된다.

👷 To-do

📌 1. 예외 및 응답 설계

  • 예외 처리할 레이어별 예외 클래스(ServiceException, ControllerException 등)를 생성한다.
  • ErrorCode Enum을 정의하여 예외 유형별 오류 코드와 메시지를 관리한다.
  • ErrorResponse 클래스를 생성하여 공통 에러 응답 포맷을 정의한다.
  • ApiResponse 클래스를 생성하여 정상 응답의 공통 포맷을 정의한다.

📌 2. 예외 처리 핸들러 구현

  • GlobalExceptionHandler를 생성하여 레이어별 예외(ServiceException, ControllerException 등)를 처리하도록 한다.
  • 예상하지 못한 예외(Exception.class)에 대해 기본적인 서버 오류 응답을 반환하도록 처리한다.

📌 3. 테스트 코드 작성

  • 정상 응답과 예외 응답을 검증하는 단위 테스트 및 통합 테스트를 작성한다.
  • 서비스 및 컨트롤러에서 예외가 발생하는 경우 적절한 응답이 반환되는지 검증한다.

📌 4. API 문서화

  • API 문서에 정상 응답 및 예외 응답 형식을 정의한다.
  • REST Docs와 연동하여 공통 응답 및 예외 응답 샘플을 포함한 API 문서를 자동 생성한다.

🔗Related issues

Related to: #이슈번호

@kyeonkim kyeonkim self-assigned this Feb 22, 2025
@kyeonkim kyeonkim added the enhancement New feature or request label Feb 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
1 participant