Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

히콩쓰 개발 일지

Spring Boot 프로젝트 Dto 사용 시 HTTP 406 Error 해결 방법! 본문

Spring

Spring Boot 프로젝트 Dto 사용 시 HTTP 406 Error 해결 방법!

용히콩 2023. 11. 21. 23:44

TO-DO LIST의 CRUD를 구현하던 중, Card를 선택해 조회하는 API 테스트를 진행했다.
POSTMAN에서 http://localhost:8080/cards/{id} 로 요청을 보냈는데, 406 Not Acceptable Error가 발생했다.

"406 Not Acceptable" 이란?
서버가 요청의 주도적인 콘텐츠 협상 헤더에 정의된 허용 가능한 값 목록과 일치하는 응답을 생성할 수 없으며, 서버가 기본 표현을 제공하지 않음을 나타낸다.

문제 발생 코드


  
@AllArgsConstructor
public class CardViewResponseDto {
private String cardTitle;
private String cardContent;
private String userName;
private LocalDateTime cardCreatedAt;
}

발생 원인 분석

  • Jakson은 이미 Spring boot를 사용하여 SpringWeb Dependency를 추가할 때 기본적으로 포함되어 있을 것이고, 다른 기능에서 Jackson이 정상적으로 작동했으니, Jackson 라이브러리가 없어서 발생한 오류는 아닐 것으로 추측했다.
  • 구글링 해보니, 406 에러의 대부분은 @Getter의 부재로 발생했다.

DTO 객체로 넘겼는데, 왜 Jackson에서 표현해주지 못한다는 건지 의문이었다.
Jackson이 기본적으로 Getter를 사용해서 (get.attirbute 형식) 데이터를 표현하는데, Getter가 없으면 접근이 불가능해서 발생한 문제였다❗


해결 방법


  
@AllArgsConstructor
@Getter
public class CardViewResponseDto {
private String cardTitle;
private String cardContent;
private String userName;
private LocalDateTime cardCreatedAt;
}

 

위 코드처럼 @Getter Annotation을 추가하여 406 문제를 해결할 수 있었다😙