티스토리 뷰

Spring Boot 프로젝트를 진행하면서 웹 브라우저를 통해 API의 결과를 확인하고자 하였습니다. 확인하고자 했던 API는 아래와 같습니다.

@GetMapping("/api/v1/posts/{id}")
public PostsResponseDto findById(@PathVariable Long id) {
    return postsService.findById(id);
}

URI를 통해 ID값을 전달받아 해당 ID에 해당하는 Posts 엔티티를 Dto로 변환 후 반환하게 되는 아주 간단한 API입니다. Dto를 반환하기에 웹 브라우저에서 해당 URI로 접근하여도 JSON 형태로 올바른 결과를 확인할 수 있을 것이라 기대하였습니다.

출처: 데브 경수

하지만 예상과 다르게 다음과 같은 화면과 로그를 보게 되었습니다.

406 Not Acceptable 클라이언트 오류 코드는 서버 요청의 헤더에 허용 가능한 값 목록과 일치하는 응답을 생성할 수 없기에 발생하는 에러입니다. 이를 보고 전송되는 데이터 변환 과정에서 문제가 발생했음을 짐작할 수 있었습니다.

 

Dto 파일을 바로 확인해 보았더니

분명 붙인 줄만 알았던 @Getter 어노테이션이 붙어 있지 않았습니다. 해당 어노테이션이 존재하지 않아 JSON 변환 시 private 접근 제어자를 사용한 필드에 접근할 수 없어 에러가 발생하는 것이었습니다. @Getter 어노테이션을 붙인 뒤 다시 확인하였더니 잘 동작하는 것을 확인할 수 있었습니다.

'Spring > Spring Boot' 카테고리의 다른 글

복합키를 가지는 JPA 엔티티 생성하기  (1) 2022.09.14
[Spring Boot] 메시지, 국제화란  (0) 2022.07.30
@RequestBody, @ResponseBody  (2) 2022.06.16
Logging  (0) 2022.06.16
MVC 어댑터 패턴  (1) 2022.06.16
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/07   »
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
Total
Today
Yesterday