메모입니다.
https://velog.io/@gloom/Client-Error-status-406-Error
해결
=> 해당 클래스에 @Getter 어노테이션을 달아둔다
이유
원인 중에는 HTTP응답 헤더 설정, Jackson 라이브러리 설치 등도 있었지만,
스프링에서 객체를 json 타입으로 변경을 해줄 때 내부적으로 get메소드를 사용해서 json 타입에 맞게 값을 넣어주는 것 같다.
그런데 get 메소드를 만들지 않은 채 객체만 띨롱 만들어서 오류가 난 듯하다
ResponseEntity만을 사용하게 되면 검증 오류 등의 에러 발생 시 어떤 문제가 생겼는지 알려주기가 힘들다.
그래서 생각한 방법
1. ResponseEntity와 에러코드를 보관하는 Enum 타입을 생성해서 관리
=> 예전 프로젝트에서 사용해봤는데, 에러코드 관리가 안돼서 고민. 그리고 이 때는 검증오류가 발생했을 때 HTTP 응답 코드는 200으로 보내놓고 객체 내 코드로 구분하는 방식을 썼었는데 내가 만들었지만 이상하다고 생각했다.
2. ErrorResponse 객체 하나 만들어서 ResponseEntity에 담아준다.
error = new ErrorResponse(~,~);
new ResponseEntity (error, HttpStatus.BAD_REQUEST);
이런 식으로
결론
두 가지가 합쳐진 방식..? 사실 잘 모르겠다.
https://cheese10yun.github.io/spring-guide-exception/
검색을 해봤을 때, 에러 코드를 관리하는 Enum 클래스의 경우 도메인만 잘 지정해주면 깔끔하게 사용할 수 있다고 했다.
@ControllerAdvice를 사용해서 검증 오류를 깔끔하게 처리할 수 있다고 했음.