관리 메뉴

제뉴어리의 모든것

HttpMediaTypeNotAcceptableException: Could not find acceptable representation 본문

BugNote

HttpMediaTypeNotAcceptableException: Could not find acceptable representation

제뉴어리맨 2022. 8. 24. 17:33

에러 상황

Controller에서 발생되는 

MethodArgumentNotValidException.class 예외처리를 위해

ExceptionHandler를 만들어 주었다.

바로 아래처럼 말이다.

  @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseEntity MethodArgumentNotValidException(MethodArgumentNotValidException e) {

        final List<FieldError> fieldErrors = e.getBindingResult().getFieldErrors(); //유효성 에러를 발생시키는 필드가 여러개 일 수 있으므로


        ErrorResponse.FieldError fieldError = new ErrorResponse.FieldError();
        List<ErrorResponse.FieldError> errorList = fieldErrors.stream().map(error -> new ErrorResponse.FieldError(
                error.getField(), error.getRejectedValue(), error.getDefaultMessage())).collect(Collectors.toList());

        ErrorResponse errorResponse = new ErrorResponse(errorList);
        return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST);
    }

 

그리고 테스트를 해보려고 PostMan을 이용하여 HTTP 메소드를 날려보았다.

그랬더니

HttpMediaTypeNotAcceptableException: Could not find acceptable representation 라는 에러 메세지가 발생하였다.

 

어쨋든 원인을 찾아보니.

 

위 코드 중 아래의 내용에서 발생되었다.

return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST);

 

원인을 찾아보니

FieldError 클래스에 Getter 메소드들이 없어서,

  @AllArgsConstructor
    @NoArgsConstructor
    public static class FieldError{ //static 멤버 클래스
        private String field;
        private Object rejectedValue;
        private String reason;
    }

해당 필드값들을 읽어서 HttpResponse 객체를 만드는 과정에서 에러가 난것 같다..

 

결국 @Getter 애노테이션을 붙여서 해결하였다.

 

참조 :  https://taengsw.tistory.com/49

 

[에러 해결] HttpMediaTypeNotAcceptableException

스프링 프로젝트를 하면서 REST API를 만드는 도중 다음과 같은 에러를 만났습니다. "org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation... 기존 방식에서..

taengsw.tistory.com