<느낀 점>
ErrorResponse 작성 방법에서
MethodArgumentNotValidException
BindingResult
ConstraintViolationException
ConstraintViolations
를 처리하는 게 어려웠다.
List<>를 처리할 때, FieldError, Constraint 클래스를 따로 만들고 그 안에서 private 생성자와 of() 메서드를 이용해서 처리할 것.
그리고 private의 경우, @Getter 가 꼭 있어야한다. 안 그러면 JSON 파싱이 제대로 안 돼서 오류남..
.
.
.
혼자서 여러가지 방법으로 삽질을 했는데, 각각의 에러마다 다른 파라미터를 가진 생성자를 오버로딩해서 메서드 10개 만들었다가, 너무 비효율적이라서 접었다.
그러다가 @Getter 써서 에러에서 메세지 받아왔는데, 포스트맨 결과에 에러에 담긴 모든 정보가 나타남^^
원하는 정보만 가져오는 것을 구현하는데 엄청 애먹었다.
원하는 정보만 아예 e.getbindingresult().getfieldError() 이런 식으로 가져오려고 했더니,
포스트맨 찍으면 결과에 예를 들면 유효성 검사를 3개의 필드가 통과를 못 했는데, 한 개의 필드에 대한 정보만 나와서,
결국은 발생한 에러들의 내부(bindingResult.getFieldErrors() 등)를 하나하나 돌아가며 에러가 발생한 각 필드와 값을 list에 넣어 반환하는 과정이 필수라는 것을 알았고,
ErrorResponse 클래스 내부에 FieldError, Constraint 멤버 클래스를 만들고 of() 메서드 작성하면서 막혔다. 한 3시간 삽질한 듯.
마지막엔 또다시 도움 받아서 해결,,⭐️
포기하지 말기,,