프로젝트를 진행하면서 자주하는 실수를 정리하려고한다.
ErrorResult 객체를 만들어서 응답하는 과정에서
org.springframework.web.HttpMediaTypeNotAcceptableException: No acceptable representation
오류가 계속 발생했다.
결론 : Jackson Mapper를 사용하기 위해서는 Getter가 필요했다.
나는 아래와 같이 예외처리 핸들러를 작성했었다.
@ExceptionHandler(VerificationCodeRequestException.class)
public ResponseEntity<ErrorResult> handleVerificationCodeRequestException(VerificationCodeRequestException e) {
log.error("인증번호 발급 오류 {}", e.getMessage());
ErrorResult errorResult = ErrorResult.builder()
.error("인증번호 발급 오류")
.message(e.getMessage())
.build();
log.error("ErrorResult : {}", errorResult);
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(errorResult);
}
문제 해결전
package com.example.Auth.exception;
import lombok.Builder;
@Builder
public class ErrorResult {
private final String error;
private final String message;
}
문제 없이 ErrorResult가 생성되는 것도 확인했고 두번째 에러 로그에도 정상적으로 출력이된다.
디버깅시 return도 정상적으로 나갔다. 하지만
401 에러가 아닌 500에러가 계속 발생한다.
구글링과 여러 삽질을 계속하다가 문득 아 @Getter
가 없는데 직렬화가 가능할까?
라는 생각이 들었고 해당 어노테이션을 추가해줬다.
자주하는 실수인데 항상 찾는데 오래걸린다.