작성
·
340
답변 8
0
0
아.. 제가 보기에는 ProductSerializer 말고 ProductResourceSerializer를 만들어 쓰시거나, ProjectResource extends ResourceSupport에다가 모든 필드를 복사해서 넣어 만드시면 해결할 수 있지 않을까요?
0
바쁘실텐데 번거롭게 해드려 죄송합니다. ㅎㅎ;
👆 jsonSerializer입니다. 이부분은 기선님의 강의에서 나온내용을 특별히 수정하지 않았습니다.
👆 제가 작성한 Product model입니다. 기선님의 강의와 다른점은 모델 자체에 serializer를 적용하였습니다.
이부분이 문제일까요?
👆 hateos를 적용하기 위한 Resource 구현체입니다. 특별히 다른 점은 없습니다. (주석처리한 내용은 좋은 대안을 못찾는다면 저렇게라도 해야할 것 같습니다. 단점은.. getId()메서드가 ResourceSupport에 이미 있어서 'id'로 출력할 수가 없다 + 모델에 필드가 추가되면 Resource파일도 수정해야한다 정도가 될것 같습니다.)
👆 테스트한 결과입니다. 'content'라는 이름이 붙는 것은 Resource interface가 제네릭으로 모델을 명칭을 특정할 수 없어서 범용적으로 사용하기 위함인듯 합니다.
👆 unwrapping 방법중 2번째 방법으로 한다면 'content' 대신 'product'라는 이름으로 key를 만듭니다.
질문이 길어저서 죄송합니다.
0
0
음.. 기선님 강의 마지막 전 챕터 (문자열 제한하여 출력하기(?))에서 jackson jsonserializer를 구현하였어요.
jsonserializer를 따로 구현하지 않으면 말씀하신것처럼 잘 동작하는데요.
jackson의 serializer를 이용하여 hateaos를 적용하니 이러한 문제가 생기더라구요.
0
0
네 해당내용을 확인하였습니다. 기선님께서 3가지 방법을 제안하셨는데, 1번째 방법을 제외하고 2,3번째 방법으로는 도저히 해결되지 않습니다.
2번째 방법으로 했을 경우는 'model이름' : { }
3번째 방법으로 했을 경우 content : { }
@Jsonunwrapped 어노테이션 불통 (이유는 아래 답변)
저와 유사한 고민을 한 사람이 있어 링크를 올립니다.
https://github.com/spring-projects/spring-hateoas/issues/414
정말 나이스한 방법은 없는 건지 아니면 어쩔수 없이 1번의 방법으로 개발을 해야하는건지 대안이 없을까요?
0