짧은 에러잡기 글입니다....
리스폰스 형식을 통일하기 위해 custom response entity를 생성해서 테스팅하던 중 발생했습니다!
분명 http의 ResponseEntity 형식에서 조금만 수정했는데...애초에 사실상 일반 DTO 리스폰스랑 다를게 없을텐데 왜 406을 리턴하는지 띠용했습니다ㅜㅜ
HTTP (HyperText Transfer Protocol) 406 Not Acceptable 클라이언트 오류 응답 코드는 서버가 요청의 사전 콘텐츠 협상 헤더에 정의 된 허용 가능한 값 목록과 일치하는 응답을 생성 할 수 없으며 서버가 기본 표현을 제공하지 않음을 나타냅니다.
Accept 등의 헤더에 적혀있는 형식을 생성해 낼 수 없을 경우 발생한다고 합니다.
검색해보니 대체로 세 가지 경우로 분류됐습니다.
jackson 라이브러리가 없기 때문인 경우. 다만 SpringBoot 프로젝트는 spring-boot-starter-web 에 기본적으로 jackson 라이브러리가 포함되어 있으니 패스합니다.
Accept에 사용된 MediaType이 설정 내에 없는 경우.Content-Type
은 데이터를 전송하는 쪽에서 데이터형식을 알려주는 헤더이고, Accept
는 클라이언트에서 웹서버로 요청시 요청메세지에 담기는 헤더로써, 선언한 타입만 허용하겠다는 의미입니다. 레거시 스프링에서는 <mvc:annotation-driven>
을 수정해주면 되는 것 같지만...
Springboot 에서 위 에러가 나는 경우는 대부분 이거인거같더군요. Getter
메서드가 없어서....😂 추가해주니 바로 정상작동합니다.
https://stackoverflow.com/questions/28466207/could-not-find-acceptable-representation-using-spring-boot-starter-web
https://joddev.github.io/2018/11/19/406-Not-Acceptable-in-Spring.html
https://lemontia.tistory.com/914
https://velog.io/@fftl/SpringBoot-Could-not-find-acceptable-representationError-Request-failed-with-status-code-406
감사합니다 ㅠ Getter 빼먹었던거 추가했더니 바로 해결했습니다!