ApiError.java – API 오류 응답 DTO
역할
- 클라이언트에 전달될 API 예외/오류 정보 담는 DTO
- 글로벌 예외 처리(
GlobalExceptionHandler)에서 사용
1. 구조
public record ApiError(
String code, // 내부 오류 코드: "AUTH_INVALID", "TOKEN_EXPIRED" 등
String message, // 사용자/프론트에 보여줄 메시지
Instant timestamp // 오류 발생 시각 (서버 시간 기준)
) {
// 간편 팩토리 메서드: timestamp 자동 설정
public static ApiError of(String code, String message) {
return new ApiError(code, message, Instant.now());
}
}
2. 설명
- code → 내부 오류 식별용 코드,
ErrorCode.name() 사용
- message → 사용자에게 보여줄 메시지, 커스텀 메시지 가능
- timestamp → 서버 기준 오류 발생 시각
GlobalExceptionHandler에서 ResponseEntity<ApiError> 반환 시 활용
of() 팩토리 메서드로 간편하게 timestamp 포함 객체 생성
3. 포인트
- record 사용 → 불변 객체, 간단하고 안전
- 통일된 오류 구조 → 프론트에서 쉽게 파싱/표시 가능
- 자동 timestamp → 로그/모니터링, 사용자 응답 시점 일치