Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException: No acceptable representation]

개발하는 구황작물·2024년 1월 11일
0

HttpMediaTypeNotAcceptableException ?

HttpMediaTypeNotAcceptableException 예외는 클라이언트가 요청한 것과 실제로 생성할 수 있는 것이 다를 경우 발생한다고 한다.
즉, 핸들러 메소드가 클라이언트가 요청한 Type으로 응답으로 내려줄 수 없는 것이 원인이였다.

406 에러?

406 Not Acceptable
하이퍼텍스트 전송 프로토콜(HTTP)의 406 Not Acceptable 클라이언트 에러 응답 코드는 서버가 요청의 주도적인 콘텐츠 협상 헤더에 정의된 허용 가능한 값 목록과 일치하는 응답을 생성할 수 없으며, 서버가 기본 표현을 제공하지 않음을 나타냅니다.
-MDN Web Docs-

서버가 요청한 타입의 응답을 생성하지 못할 때 발생하는 에러이다.

나의 경우에는 ResponseDto에 @Getter가 없어 값에 접근하지 못해 발생한 문제였다.

해결

ResponseDto

@Getter
public class ResponseDto<T> {
    private final String status;
    private T data;
    private final String message;
    private final String dateTime;

    @Builder
    public ResponseDto (String status, T data, String message, String dateTime) {
        this.status = status;
        this.data = data;
        this.message = message;
        this.dateTime = dateTime == null ? LocalDateTime.now().toString() : dateTime;
    }

    public static<T> ResponseDto<?> success200() {
        return ResponseDto.builder()
                            .status("200")
                            .message("OK")
                            .build();
    }

    public static<T> ResponseDto<?> success200(T data) {
        return ResponseDto.builder()
                            .status("200")
                            .data(data)
                            .message("OK")
                            .build();
    }
}

ResponseDto에 @Getter를 추가 해주어 해결할 수 있었다.

profile
어쩌다보니 개발하게 된 구황작물

0개의 댓글