문제 정의
웹 애플리케이션에서 다양한 응답과 예외 상황을 처리하는 과정에서, 프론트엔드에 불필요한 데이터가 포함되거나 일관되지 않은 형식으로 전달될 수 있는 문제가 있었습니다.
설계 목적
이를 해결하기 위해, 모든 응답과 예외 상황을 체계적으로 관리하고 필요한 정보만을 추출하여 제공할 수 있는 공통 응답 객체와 전역 예외 처리 구조를 설계했습니다. 위와 같은 구조는 응답의 일관성을 유지하고, 유지보수성을 높이며, 예외 상황에서도 명확하고 간결한 데이터를 전달할 수 있도록 시스템의 안정성을 강화하는 데 중점을 두었습니다.
설계
global
└── common
├── exception
│ ├── CommonException.java // 사용자 정의 예외 클래스
│ ├── ErrorCode.java // 다양한 에러 코드 관리 클래스
│ ├── ExceptionResponse.java // 예외 응답 객체(예외 코드&메시지 캡슐화)
│ └── GlobalExceptionHandler.java // 전역 예외 처리기
└── response
└── ApiResponse.java // 공통 응답 객체
각 파일 설명
- ExceptionResponse
- 예외 응답 객체로, 발생한 예외의 코드와 메시지를 캡슐화하여 클라이언트에 전달하는 역할을 수행합니다.
- CommonException
- 사용자 정의 예외 클래스로, ErrorCode를 기반으로 예외를 생성하고 처리할 수 있습니다.
- ErrorCode
- 애플리케이션에서 발생할 수 있는 다양한 예외의 코드, HTTP 상태, 메시지를 정의하고 관리합니다.
- GlobalExceptionHandler
- 전역 예외 처리기로, 프로젝트에서 발생하는 다양한 예외를 처리하고 적절한 응답을 반환합니다.
- ApiResponse
- API 응답 포맷을 정의한 클래스입니다. 성공/실패 여부, 결과 데이터, 예외 정보를 포함한 응답 객체를 생성합니다.
결과


코드
GitHub - Bang1999/WeShareU: 외국인을 위한 여행 공유 플랫폼 WSU
외국인을 위한 여행 공유 플랫폼 WSU. Contribute to Bang1999/WeShareU development by creating an account on GitHub.
github.com
'TIL' 카테고리의 다른 글
Spring AOP와 예외처리를 활용한 로그 쌓기 (0) | 2024.12.27 |
---|---|
Redis와 SMTP를 이용한 임시비밀번호 발급 기능 (0) | 2024.12.27 |
SHA-256 기반의 KISA 표준 암호화 알고리즘을 활용한 개인정보 보안 처리 (0) | 2024.12.27 |
[24.09.17] Spring boot, coolsms를 활용한SMS 전송 (1) | 2024.09.17 |
[24.09.16] 프로젝트 개인 레포지토리로 가져와 리펙토링 하는 법 (0) | 2024.09.16 |