• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

응답 본문으로 반환되는 컴포지트 객체에 대한 Serializitoin시 Unwrapped를 해야하는 이유에 대한 질문입니다.

20.05.30 17:44 작성 조회수 128

1

안녕하세요. 

응답 본문에 전달되는 Unwrapped된 JSON 문자열에 대해 궁금한 사항이 두 가지 있어 질문 글을 남깁니다.

"Spring HATEOS 적용" 강의 내용 중 응답 본문에 Link 정보를 넣어주기 위해 ResourceSupport 또는 Resource<T>를 상속받는 EventResource 클래스를 생성하고, 이를 사용하여 Event에 대한 링크 정보를 생성할 수 있었습니다.

EventController의 createEvent() 메소드에서 응답 본문에 EventResource 타입의 데이터를 반환하는 모습을 볼 수 있었는데요.(ObjectMapper(+BeanSerializer)을 이용한 JSON 문자열 데이터)

이때 EventResource는 컴포지트 객체인 Event 타입의 필드를 가지고 있기 때문에  BeanSerializer가 자동으로 Event 타입의 필드명으로  JSON 문자열을 감싸고, 그 안에 필드 목록을 JSON 데이터로써 넣어주게 되는 것일까요?

이전 수업까지 EventController의 createEvent()에서는 EventDto 객체를 ModelMapper을 사용하여 Event 객체로 변환하고, 응답 본문에 넣어주었는데,

이 경우 Event 객체의 필드 목록에는 컴포지트 객체가 없기 때문에 특정한 필드명으로 감싼 형태의 JSON 문자열이 나오지 않았다고 이해하면 될까요?

또한, JSON 문자열에 대해 Unwrapped를 하느냐, 마느냐에 대한 결정은 개발자의 선택이고, REST API에서 권장사항은 별도로 없는 것인가요?

긴 글 읽어주셔서 감사드리며, 조언 부탁드립니다.

[참고사항]

Spring HATEOS 1.1.0 버전을 사용하고 있기에 

ResourceSupprot ==> RepresentaionModel

Resource<T> ==> EntityModel<T>

로 사용하였습니다.

답변 1

답변을 작성해보세요.

1

네 말씀하신대로 응답 본문에 담기는 객체만 다를 뿐 실제로는 사용하는 BeanSerializer는 동일합니다. Unwrapped는 해야 하는게 아니라 선택입니다.