어제 끙끙 앓던 이슈가 해결됐다!!!! 아래 엄청난 주석들.. 고뇌의 흔적.. 결론은 ErrorResponse 객체에 @Getter 어노테이션을 줘서 해결되었다. 대체 안쓰면 에러가 난거지?? 도저히 모르겠음..
테스트 한것들
timestamp 필드 제거해보기 → 실패
ResponseEntity status만 있는 리턴으로 바꿔서 되나 확인 → 통과. Response 리턴 관련해서 무언가 문제라는 것.
에러 내용 찾아봤는데 자꾸 `MappingJackson2HttpMessageConverter` 문제 라고 함.. → 보류 사실 잘 안써봐서 모르기도 하고 Controller에서는 정상으로 Json 잘 리턴했었는데 갑자기 Jackson이 제대로 등록 안되어있다는 게 이상했다. 했다가 코드 꼬일거같아서 시도하지 않음 ㅎㅎ;;
에러처리 전에 성공버전으로 만들었던 JsonResponse를 리턴으로 줘봤다. → 통과 ?!!!!
원인은 @Getter 아니 JsonResponse 는 에러 정상리턴되고 ErrorResponse 는 웨않되...? 완전 둥절해서 벙쪘다가 찬찬히 둘 코드를 비교했음. 들어있는건 각자에 맞는 필드랑 생성자 메서드뿐인데 다를게 뭐지.. 하다가 위에 롬복어노테이션 발견. JsonResponse는 @Getter, @Setter 붙어있었고, ErrorResponse는 @Builder 를 쓰고있었다. 결론적으로 저 어노테이션 별로 다 테스트해보니 @Builder와 @Setter는 상관없고 **@Getter** 만 있으면 동작했다. 일단 해결은 했는데 Getter 메서드를 왜필요로하는건지 잘 모르겠다. 휴..ㅠㅠ
에러 내용 (참고) ExceptionHandlerExceptionResolver : Failure in @ExceptionHandler com.itevent.iteventapi.common.error.ControllerExceptionHandler#handleIllegalArgumentException org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
프론트에서 배열에 들어있는 목록형태로 데이터를 응답해줬으면 좋겠다고 하였다. js에서는 객체구조를 휙만들어서 슉넣으면 짜잔하고 빠르게 구조가 만들어지는데 java는 class 구조도 맞춰야하고 넘 까다롭다.. 그래도 Jackson이 있어서 Object↔Json변환이 쉬우니까 망정이지 .. 짹쓴 고마워.. 😉
(postman으로 API 스펙도 이쁘게 쫙 뽑아냈다. 정갈하니 좋구만 ㅎㅎ)
지난 번 Response객체 에러났던 Error속Error의 해결방법이었던 Getter.. 왜 Getter가 필요한지 확실한 원인 파악 완료!
→ 짹쓴.. 너를 몰라봐서 미아내... 내가 열심히 공부해줄게 짹쓴 ㅠ0ㅠ.. (혼자난리부르스 ㅎㅎ...)
오늘하루보지않기 클릭(체크) 시 쿠키 생성되어 1일 간 팝업 미노출 (이후 쿠키 삭제됨)'오늘하루보지않기' 기능 적용 (브라우저 쿠키 값 기반)
📚 개발 독서 - 토비의 스프링3
8.2 스프링의 목적
🎉 IT 행사 아카이빙 프로젝트
작업 내용
Event Request DTO 클래스 @Valid 적용 중
이슈
Enum 유효값 체크에서 막혔다. @NotBlank 적용하고 적절한 값 넣었는데 아래처럼 에러 난다. "javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'com.itevent.iteventapi.modules.event.EventCreateType'. Check configuration for 'eventCreateType'"