티스토리 뷰

REST API - Event 생성 API 구현 - BAD_REQUEST 응답

  • BAD_REQUEST 응답을 보냈지만, 응답만 봐서는 어떤 원인에 의해 BAD_REQUEST가 발생했는지에 대한 정보가 제공되고 있지 않다.
  • 잘못된 요청이라면 어떤 원인에의해 잘못된 요청인지 응답과 함께 제공해야한다.

테스트 코드

  • 잘못된 요청을 보냈을경우 해당 에러 정보가 존재하는지 테스트
  • 이러한 에러에 대한 정보는 Errors객체가 가지고있다.

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가지 유형이 존재한다.
    1. FieldError
      • rejectValue() Method를 사용하여 에러 정보를 담은경우
      • 제공하는 정보
        • Field
        • ObjectName
        • Code
        • DefaultMessage
    1. GlobalError
      • reject() Method를 사용하여 에러 정보를 담은경우
      • 제공하는 정보
        • ObjectName
        • Code
        • DefaultMessage

Errors를 Serialization 하는 방법

    1. 별도의 ErrorResponse 객체를 만들어 Error 관련 정보를 내보내는 방법
      • 일종의 DTO를 사용하는방법
      • Custom Serializer를 만드는 방법
      • ObjectMapper가 사용한 Serializer를 만들어 등록하는 방법

Custom Serializer

  • JsonSerializer 를 구현하는 클래스를 생성후 serialize() Method를 구현한다.

@JsonComponent

 

Using @JsonComponent in Spring Boot | Baeldung

Learn how to use the @JsonComponent annotation in Spring Boot.

www.baeldung.com

Custom Serializer 를 적용한 후 테스트 결과

  • EventValidator 에서 Validation 한 결과 (에러 정보)가 응답 본문에 함께 제공되는것을 볼 수 있다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함