[스프링 부트] could not find acceptable representation - no acceptable representation 406 에러

Spring boot, 스프링 부트 에러 해결, httpmediatypenotacceptableexception
dustjq1005 2024년 11월 28일 2025년 07월 23일 수정됨

Spring Boot에서 API 개발 중 HttpMediaTypeNotAcceptableException 발생..

컨트롤러에서 JSON 응답을 반환할 때
이 발생할 수 있다고 합니다.

1. 예외 설명

  • HttpMediaTypeNotAcceptableException
    • 클라이언트가 요청한 Accept 헤더와
      서버가 응답 가능한 미디어 타입이 일치하지 않을 때 발생합니다.
    • 예시:
      클라이언트가 Accept: application/json으로 요청했으나
      서버가 객체를 JSON으로 변환하지 못할 때

2. 자주 발생하는 원인: 응답 객체에 Getter 없음

  • 반환 객체에 @Getter(Lombok), 혹은 getter 메소드가 없을 때
    Jackson이 해당 객체를 JSON으로 변환하지 못해 예외가 발생

문제 예시

public class ApiResponse {
    private String result;
    // Getter 없음
}

이유
Jackson(ObjectMapper)은 getter 메소드가 없으면 필드 값을 읽을 수 없어 JSON으로 직렬화할 수 없습니다.

3. 문제 해결 방법

Lombok 어노테이션 사용

@Getter
@AllArgsConstructor
public class ApiResponse {
    private String result;
}

직접 getter 메소드 추가

public class ApiResponse {
    private String result;
    public String getResult() {
        return result;
    }
}

4. 점검 체크리스트

  •  DTO, 응답 객체에 @Getter 또는 getter 메소드가 있는지 확인
  •  필요하다면 @Data(Lombok)로 일괄 적용 가능
  •  JSON 직렬화가 필요한 객체는 getter가 반드시 있어야 함

5. 추가 팁

  • private 필드만 있고 getter가 없으면 직렬화 불가
  • 만약 JSON이 아니라 뷰 렌더링(Thymeleaf, JSP 등)이라면 별도의 오류 메시지가 나올 수 있음

6. 결론

  • HttpMediaTypeNotAcceptableException이 발생하면, 응답 객체의 getter(혹은 Lombok 어노테이션)가 빠져있는지 점검!
  • getter를 추가하면 대부분 정상적으로 JSON 응답이 반환됩니다.

참고

Comments