HttpMediaTypeNotAcceptableException : No acceptable representation 해결

w-beom·2023년 4월 12일
0
post-thumbnail

@ControllerAdvice를 이용한 글로벌 예외처리 작업을 하다가 예외가 발생했습니다.

org.springframework.web.HttpMediaTypeNotAcceptableException: No acceptable representation
	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:322) ~[spring-webmvc-6.0.6.jar:6.0.6]
	at org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor.handleReturnValue(HttpEntityMethodProcessor.java:245) ~[spring-webmvc-6.0.6.jar:6.0.6]
    ...

아래는 예외가 발생한 코드입니다.

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseEntity<ErrorResponse> methodArgumentNotValidExceptionHandler(final MethodArgumentNotValidException ex) {
        ErrorResponse errorResponse = new ErrorResponse(ex.getMessage(), HttpStatus.BAD_REQUEST);
        return ResponseEntity.badRequest().body(errorResponse);
    }
}

ReponseEntity로 반환하는 ErrorReponse객체에 getter가 없어서 예외가 발생하였습니다.

수정 전

public class ErrorResponse {
    private final String message;
    private final HttpStatus httpStatus;

    public ErrorResponse(String message, HttpStatus httpStatus) {
        this.message = message;
        this.httpStatus = httpStatus;
    }
}

수정 후

@Getter
public class ErrorResponse {
    private final String message;
    private final HttpStatus httpStatus;

    public ErrorResponse(String message, HttpStatus httpStatus) {
        this.message = message;
        this.httpStatus = httpStatus;
    }
}

저는 Lobmok 라이브러리를 사용중이라 @Getter 어노테이션을 추가하였습니다.
Lombok을 사용하지 않는다면 따로 getter 메소드를 생성하면 될 것 같습니다.

참고 : https://stackoverflow.com/questions/28466207/could-not-find-acceptable-representation-using-spring-boot-starter-web

profile
습득한 지식과 경험을 나누며 다른 사람들과 문제를 함께 해결해 나가는 과정에서 서로가 성장할 수 있는 기회를 만들고자 노력합니다.

0개의 댓글