inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 기반 REST API 개발

질문이 있습니다.

428

JiHoon Lee

작성한 질문수 3

0

Resouce에 custom Jsonserialize를 만들어 사용하면 꼭 content:{} object안에 내용이 담기는데, 모델마다 serializer를 만들어 주지 않으면 일관성이 떨어져서 content 안에 있는 필드를 꺼내고 싶습니다.

검색을 아무리해도 잘 나오지 않아 질문드립니다.

java spring rest-api

답변 8

0

JiHoon Lee

조언 감사합니다 ㅎㅎ

저는 필드를 복사하는 방법으로 해결하였습니다.

ps. 유튜브도 잘 보고있습니다 ㅎㅎ

0

백기선

아.. 제가 보기에는 ProductSerializer 말고 ProductResourceSerializer를 만들어 쓰시거나, ProjectResource extends ResourceSupport에다가 모든 필드를 복사해서 넣어 만드시면 해결할 수 있지 않을까요?

0

JiHoon Lee

바쁘실텐데 번거롭게 해드려 죄송합니다. ㅎㅎ;

jsonserializer

👆 jsonSerializer입니다. 이부분은 기선님의 강의에서 나온내용을 특별히 수정하지 않았습니다.

product model

👆 제가 작성한 Product model입니다. 기선님의 강의와 다른점은 모델 자체에 serializer를 적용하였습니다.

이부분이 문제일까요?

Resource

👆 hateos를 적용하기 위한 Resource 구현체입니다. 특별히 다른 점은 없습니다. (주석처리한 내용은 좋은 대안을 못찾는다면 저렇게라도 해야할 것 같습니다. 단점은.. getId()메서드가 ResourceSupport에 이미 있어서 'id'로 출력할 수가 없다 + 모델에 필드가 추가되면 Resource파일도 수정해야한다 정도가 될것 같습니다.)

👆 테스트한 결과입니다.  'content'라는 이름이 붙는 것은 Resource interface가 제네릭으로 모델을 명칭을 특정할 수 없어서 범용적으로 사용하기 위함인듯 합니다. 

👆 unwrapping 방법중 2번째 방법으로 한다면 'content' 대신 'product'라는 이름으로 key를 만듭니다.

질문이 길어저서 죄송합니다.

0

백기선

"출력값 제한하기" 수업도 다시 살펴봤는데, 거기에도 content는 찍히지 않는데 어떻게 쓰신 건지.. 코드를 공유해 주실 수 있으신가요?

0

JiHoon Lee

음.. 기선님 강의 마지막 전 챕터 (문자열 제한하여 출력하기(?))에서 jackson jsonserializer를 구현하였어요.

jsonserializer를 따로 구현하지 않으면 말씀하신것처럼 잘 동작하는데요.

jackson의 serializer를 이용하여 hateaos를 적용하니 이러한 문제가 생기더라구요.

0

백기선

흠.. 그러니까 두번째 세번째가 왜 그렇게 결과가 나올까요. 제가 보여드린 예제에서는 풀려서 나왔는데요.

0

JiHoon Lee

네 해당내용을 확인하였습니다. 기선님께서 3가지 방법을 제안하셨는데, 1번째 방법을 제외하고 2,3번째 방법으로는 도저히 해결되지 않습니다.

2번째 방법으로 했을 경우는 'model이름' : { }

3번째 방법으로 했을 경우 content : { }

@Jsonunwrapped 어노테이션 불통 (이유는 아래 답변)

저와 유사한 고민을 한 사람이 있어 링크를 올립니다.

https://github.com/spring-projects/spring-hateoas/issues/414

정말 나이스한 방법은 없는 건지 아니면 어쩔수 없이 1번의 방법으로 개발을 해야하는건지 대안이 없을까요?

0

백기선

"스프링 HATEOAS 적용" 수업에 보시면 8분 30초부터 본문을 꺼내서 응답을 만드는 방법에 대해 설명하고 있습니다. 해당 수업 참고 부탁드립니다.

Spring 시큐리티 관련해서 WebSecurityConfigurationAdapter

0

73

1

junit5 사용하시는 분들

0

88

1

자바 빈 스펙을 준수하는지 체크하는 테스트

0

238

2

REST API 개발 중 비즈니스 로직 적용 부분의 JSON 에러

0

243

1

스프링 부트 3버전에서의 실습

0

190

1

java.lang.AssertionError: Status

0

532

2

spring doc 관련 파일 생성 관련 배포 관련 질문 드립니다.

0

287

1

섹션2 201응답받기 부분 테스트 404에러 질문입니다

0

741

1

강의 자료가 404입니다 확인 부탁 드려요!

0

477

1

연동 DB문의

0

358

1

이벤트 Repository강의 중 Event 클래스에 private Integer Id; 위치 질문

0

505

1

(Mac) postgressql 관련하여 port kill 해도 다시 살아나는 경우

0

380

0

maven으로 생성한 docs파일(index.html)에서의 not found 오류 질문

0

621

1

테스트 오류 질문드립니다.

0

512

1

docs 요청값이 반영이 안되네요... (해결)

-1

394

1

psql 적용 후 에러

0

819

2

mvn package 시 다음과 같은 에러가 나시면

0

765

2

Event에 Account manager를 추가했으면 문서화 필요

0

274

1

2년 훨씬 전 부터 Restlet-> Talend API 로 바뀌었습니다~

1

473

1

asciidoc 추가 스니펫 에러 해결법

0

400

1

_links 는 현재 fieldWithPath 를 해주지 않아도 됩니다.

0

424

3

깃랩 처음 사용자를 위한 index.adoc raw 보는 법

0

332

1

eclipse 쓰시는 분을 위한 maven-resources-plugin 팁

0

333

1

부트 + jupiter 인 경우 설정법

0

342

1