티스토리 뷰
REST API - Event 생성 API 구현 - BAD_REQUEST 응답
- BAD_REQUEST 응답을 보냈지만, 응답만 봐서는 어떤 원인에 의해 BAD_REQUEST가 발생했는지에 대한 정보가 제공되고 있지 않다.
- 잘못된 요청이라면 어떤 원인에의해 잘못된 요청인지 응답과 함께 제공해야한다.
테스트 코드
- 잘못된 요청을 보냈을경우 해당 에러 정보가 존재하는지 테스트
- 이러한 에러에 대한 정보는 Errors객체가 가지고있다.
이벤트 생성 API 변경
- Error가 발생하면 Errors객체를 응답본문으로 제공하면 되지않나 ?
- ObjectMapper는 다양한 Serializer를 가지고있는데 Errors객체는 'Java Bean Spec' 을 준수하는 객체가 아니기때문에
- Serialization이 불가능하다.
ObjectMapper
- ObjectMapper는 JavaBean Spec을 준수하는 객체의 경우 기본으로 등록된 Bean Serializer 를 사용해서 Serialization을 진행한다.
결과
- 적절한 Serializer를 찾지 못했다는 예외가 발생하게 된다.
Java Bean 이란 ?
ces518/ILE
I am Learn EveryDay. Contribute to ces518/ILE development by creating an account on GitHub.
github.com
Errors
- Errors를 활용하여 에러 정보를 담는데는 2가지 유형이 존재한다.
- FieldError
- rejectValue() Method를 사용하여 에러 정보를 담은경우
- 제공하는 정보
- Field
- ObjectName
- Code
- DefaultMessage
- GlobalError
- reject() Method를 사용하여 에러 정보를 담은경우
- 제공하는 정보
- ObjectName
- Code
- DefaultMessage
- FieldError
Errors를 Serialization 하는 방법
-
- 별도의 ErrorResponse 객체를 만들어 Error 관련 정보를 내보내는 방법
- 일종의 DTO를 사용하는방법
-
- Custom Serializer를 만드는 방법
- ObjectMapper가 사용한 Serializer를 만들어 등록하는 방법
- 별도의 ErrorResponse 객체를 만들어 Error 관련 정보를 내보내는 방법
Custom Serializer
- JsonSerializer 를 구현하는 클래스를 생성후 serialize() Method를 구현한다.
@JsonComponent
- ObjectMapper 에 Custom Serializer를 등록해 주어야하는데 Spring Boot에서 제공하는 @JsonComponent를 사용하면 손쉽게 등록이 가능하다.
- https://www.baeldung.com/spring-boot-jsoncomponent
Using @JsonComponent in Spring Boot | Baeldung
Learn how to use the @JsonComponent annotation in Spring Boot.
www.baeldung.com
Custom Serializer 를 적용한 후 테스트 결과
- EventValidator 에서 Validation 한 결과 (에러 정보)가 응답 본문에 함께 제공되는것을 볼 수 있다.
'RESTAPI' 카테고리의 다른 글
RESTAPI - JUnitParams (0) | 2019.08.12 |
---|---|
RESTAPI - Event 생성 API 구현 - 비지니스 로직 (0) | 2019.08.11 |
RESTAPI - Test Description Annotation (0) | 2019.08.11 |
RESTAPI - Event 생성 API 구현 - BAD_REQUEST (0) | 2019.08.10 |
RESTAPI - Event 생성 API 구현 - 입력값 제한 이외에 에러 발생 (0) | 2019.08.10 |
댓글