230318 TIL #36 406 에러 / DTO 에 @Getter

김춘복·2023년 3월 17일
0

TIL : Today I Learned

목록 보기
36/571

230318 Today I Learned

미니프로젝트 2일차. 오늘은 남은 코드를 다 짜고 리팩토링을 진행했다. 프론트와 속도 차이가 나서 일단 임시로 배포를 진행했다.


406 에러

  • 문제 : HttpMediaTypeNotAcceptableException 406 에러가 떴다.

  • 시도 : 필터와 config쪽 오류인지 점검해봤으나 나오지 않았다.
    헤더에 Content-Type application/json 을 넣고 빼고 해봤으나 상관없는 에러였다.
    구글링 해보니 아래 사이트에 문제 해결 방법이 있었다.
    참고사이트

  • 해결 : MessageResponseDto에 @Getter가 없어서 생긴 오류였다. 여기에 @Getter를 달아두니 에러가 해결되었다.

@Getter
public class MessageResponseDto {
    private int statusCode;
    private String msg;

    public MessageResponseDto(HttpStatus httpStatus, String msg){
        this.statusCode = httpStatus.value();
        this.msg = msg;
    }
}

여기에는 private 로 선언되어 있는 변수들인데 DTO에 Getter가 없으면

ResponseEntity.ok(new MessageResponseDto(HttpStatus.OK, "회원가입이 성공적으로 진행되었습니다."));

이렇게 반환할 때 ResponseEntity가 private 변수 값들을 받아오지 못하기 때문이다.

  • 알게된 점 : DTO의 변수를 private로 선언하면 @Getter를 꼭 달아두자.
profile
Backend Dev / Data Engineer

0개의 댓글