이슈
GET요청을 받아올 때, 다음과 같은 예외 발생
2023-07-14T04:34:09.773+09:00 WARN 11788 --- [nio-8080-exec-3]
.w.s.m.s.DefaultHandlerExceptionResolver
: Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException
: No acceptable representation]
컨트롤러 단의 코드
@GetMapping("/view/all")
public ResponseEntity<PostsResponseDto> getPosts() {
PostsResponseDto result = postService.getPosts();
return ResponseEntity.ok().body(result);
}
ResponseEntity에 담아주는 PostsResponseDto 클래스
public class PostsResponseDto {
private List<PostResponseDto> postsList;
public PostsResponseDto(List<PostResponseDto> postList) {
this.postsList = postList;
}
}
해결
객체 안에 List를 담아서 그 객체를 APIResponseDto의 body에 담아서 보내는 것이 안되는 건가 싶어서 ResponseDto에 대해 구글링을 해보니 body에 List나 Map을 담아도 전혀 문제가 없는 것 같았다. 오 List는 알고 있었는데 Map이라니 새로운 걸 알게 되었다. 여튼, 혹시 객체 안에 List를 담아서 보낸게 문젠가? 싶어서 객체에서 꺼내서 보내보았다. 다음은 수정한 코드이다.
@GetMapping("/view/all")
public ResponseEntity<List<PostResponseDto>> getPosts() {
List<PostResponseDto> results = postService.getPosts();
return ResponseEntity.ok().body(results);
}
이렇게 고치고 요청을 보내보니 PostResponseDto가 List의 형식으로 잘 왔다. 전 프로젝트에서는 잘 진행이 되었던 거 같은데 왜 이번에는 안됐는지 잘 모르겠다.
뭐가 다른지 왜 안 됐는지에 대해 공부하고 추가 기록 필요.
'STUDY > SpringBoot' 카테고리의 다른 글
[TIL] SpringBoot dependency 버전 맞추기! (0) | 2023.07.25 |
---|---|
[TIL] SQLSyntaxError ( 컬럼명 like 문제) (0) | 2023.07.14 |
[TIL] AnnotationException 예외 발생 (mappedBy) (0) | 2023.07.13 |
[TIL] http.authorizeHttpRequests.requestMatchers API 설정(정확한 해결 방법 추가 기록 필요) (0) | 2023.07.10 |
[TIL] UnsatisfiedDependencyException : Unsatisfied dependency expressed through constructor parameter 0 해결하기 (0) | 2023.06.27 |