-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
enhancementNew feature or requestNew feature or request
Description
✅ 완료된 작업
1️⃣ API 응답 통일 구조 구축
- BaseErrorCode 인터페이스: getStatus(), getCode(), getMessage() 메서드 정의
- BaseSuccessCode 인터페이스: getStatus(), getCode(), getMessage() 메서드 정의
- ApiResponse 클래스: 통일된 JSON 응답 구조(성공/실패, 코드, 메시지, 결과값)와 정적 팩토리 메서드 onSuccess()/onFailure() 구현
2️⃣ 성공 응답 코드 Enum 제작
- GeneralSuccessCode: OK, CREATED, ACCEPTED, NO_CONTENT
- 도메인별 SuccessCode Enum(ReviewSuccessCode, MemberSuccessCode, MissionSuccessCode, StoreSuccessCode)
3️⃣ 에러 응답 코드 Enum 완성
- GeneralErrorCode: BAD_REQUEST, UNAUTHORIZED, FORBIDDEN, NOT_FOUND, INTERNAL_SERVER_ERROR
4️⃣ ApiResponse 메서드 구현
- onSuccess(T result), onSuccess(BaseSuccessCode code, T result), of(BaseSuccessCode code, T result), onSuccess(), onFailure(BaseErrorCode code, T result), onFailure(BaseErrorCode code)
5️⃣ 예외 처리 구조 구축
- GeneralException(RuntimeException 상속, BaseErrorCode 포함)
- TestException(GeneralException 상속 도메인 예시)
6️⃣ 기존 API 응답 통일 적용
- TestController (/temp): 테스트 및 예외 테스트 API
- ReviewController (/api/reviews): 내가 작성한 리뷰 조회 API - ResponseEntity → ApiResponse로 변경, 코드 Enum 적용
7️⃣ 서비스 레이어 구조 정리
- TestCommandServiceImpl 구조 정비
- TestQueryService 의존성 주입 개선
📋 통일된 API 응답 예시
✅ 성공 응답
{
"isSuccess": true,
"code": "REVIEW200_2",
"message": "리뷰 목록 조회에 성공했습니다.",
"result": { /* 실제 데이터 */ }
}
❌ 실패 응답
{
"isSuccess": false,
"code": "COMMON404_1",
"message": "요청한 리소스를 찾을 수 없습니다.",
"result": null
}
🔍 적용된 설계 패턴 및 원칙
- 응답 DTO 통일: 모든 API에서 ApiResponse 사용
- 도메인별 코드 분리: SuccessCode, ErrorCode Enum 분리 관리
- 정적 팩토리 메서드: 명시적이고 일관된 응답 생성
- 인터페이스 기반 설계: BaseSuccessCode, BaseErrorCode
- 타입 안정성: Enum 통한 코드 관리
📁 생성 / 수정된 파일
🆕 생성: BaseErrorCode.java, BaseSuccessCode.java, GeneralSuccessCode.java, ReviewSuccessCode.java, MemberSuccessCode.java, MissionSuccessCode.java, StoreSuccessCode.java
✏️ 수정: ApiResponse.java, GeneralErrorCode.java, ReviewController.java, TestController.java, TestException.java, TestCommandServiceImpl.java
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request