스프링 기반 REST API 개발 -백기선님 인프런 강좌를 보고 작성하였습니다.
입력값이 이상한 경우 Bad Request 응답
EventController
1 | eventValidator.validate(eventDto,errors); |
입력값이 이상한 경우 Bad Request 응답을 받기위해 컨트롤러 응답을 넣는것처럼
body에 errors객체를 넣으면 안된다!
이유는 event 객체는 자바빈 스펙을 준수한 객체이기 때문에 ObjectMapper가 BeanSerializer를 이용하여 json으로 변환이 가능하다.
하지만 errors 객체는 자바빈 스펙을 준수한 객체가 아니다. 그렇기 때문에 json으로 변화를 하려다 에러가 발생한다.
ErrorsSerializer
1 | public class ErrorsSerializer extends JsonSerializer<Errors> { |
errors는 FieldErrors와 GlobalErrors가 있으며 json object를 두개 다 이렇게 채워주면 됩니다.
ErrorSerializer을 만들고 나서 ObjectMapper에 등록을 해줘야 하는데 @JsonComponent 어노테이션을 이용하여 등록할 수 있습니다.
Errors라는 객체를 serializer 할때 ErrorSerializer을 사용하게 됩니다.
이렇게 하여 body(errors)를 컨트롤러에서 넣으면 errors를 응답으로 주게 됩니다.