Spring

[에러해결][Mapstruct]org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation

테디규 2023. 2. 21. 10:24

문제상황

MVC 패턴의 Mapstruct를 이용한 Mapper를 이용하는 도중 해당 에러가 발생하였다.

@RestController
@RequestMapping("/answers")
@RequiredArgsConstructor
public class AnswerController {
    private final AnswerService answerService;
    private final AnswerMapper answerMapper;
    @PostMapping
    public ResponseEntity postAnswer(@RequestBody AnswerDto.Post postDto){
        Answer findAnswer = answerService.createAnswer(answerMapper.answerPostDtoToAnswer(postDto));
        return new ResponseEntity(answerMapper.answerToAnswerResponseDto(findAnswer), HttpStatus.CREATED);
    }
}

PostDto로 요청 메시지를 받아 엔티티로 변환하고, 엔티티를 ResponseDto로 변환하여 출력하는 소스 코드이다.

    @Setter
    public static class Response{
        private Long answerId;
        private Long score;
        private Boolean isAccepted;
        private String content;
    }

Dto는 다음과 같다.

해결 방법

디버깅해보니, 응답해보는 과정에서 발생하는 에러였다.
ResponseEntity 에 들어오는 객체를 변환하는 과정에서 Getter 가 필요한데 내 Response Dto 코드에는 @Getter가 없어서 발생하는 문제였다.

Response 에 @Getter를 추가해주자.

출처

https://stackoverflow.com/questions/28466207/could-not-find-acceptable-representation-using-spring-boot-starter-web