인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

JaeHong님의 프로필 이미지

작성한 질문수

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

게시글 CRUD API 구현

@Test update, delete 메서드 문의

해결된 질문

작성

·

124

0

  • 학습 관련 질문을 최대한 상세히 남겨주세요!

  • 고민 과정도 같이 나열해주셔도 좋습니다.

  • 먼저 유사한 질문이 있었는지 검색해보세요.

  • 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

안녕하세요. 강의 잘 듣고 있습니다.

 

테스트 코드 update와 delete 메서드를 실행해도 변화가 없어서 검색을 해보니 .retrieve() 뒤에 .toBodilessEntity()를 추가하니 정상적으로 작동됩니다.

 

강의와 다르게 .toBodilessEntity() 메서드를 추가해야지 작동하여서 이에 대해 어떤 차이가 있는 궁금합니다.

답변 2

0

쿠케님의 프로필 이미지
쿠케
지식공유자

JaeHong님, 안녕하세요!

스프링부트 버전업이 되면서 동작이 달라졌더라고요..!

원활한 수강을 위해서 동일한 버전을 맞추시는걸 권장드리지만,

어차피 개념만 알고 있으면 딱히 문제 될 부분은 아니라,

스스로 잘 해결하실 수 있으시면 편한 방향으로 진행하셔도 될 것 같네요!

https://www.inflearn.com/community/questions/1521270?focusComment=398601

이전에 다른분이 잘 정리해주신 게 있어서 참고하셔도 좋을 것 같습니다!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. JaeHong님.

테스트 코드에서 updatedelete 메서드 실행 시 .retrieve() 뒤에 .toBodilessEntity()를 추가해야 작동하는 이유에 대해 궁금하신 것 같습니다.

문제의 핵심

1. RestClient의 동작 변화

스프링 부트의 버전이 업데이트되면서 RestClient의 동작 방식에 변화가 있을 수 있습니다. 특정 요청 메소드(예: POST, DELETE)에 대해 .retrieve()만 호출할 경우, 실제로 요청이 서버로 전달되지 않고 종료되는 문제가 발생할 수 있습니다. 이는 비동기 요청의 결과를 명시적으로 처리하지 않았기 때문입니다.

2. .toBodilessEntity() 메서드의 역할

.toBodilessEntity() 메서드는 응답 본문을 사용하지 않고도 요청의 성공 여부를 비동기적으로 기다렸다가, 요청이 서버에 성공적으로 전달되었는지 확인합니다. 이로 인해 명시적으로 응답을 처리하려는 의도가 전달될 수 있습니다.

해결 방법

  • 버전 확인: 사용 중인 스프링 부트의 버전을 강의와 동일한 버전으로 설정하여 문제를 해결할 수 있습니다.
  • 코드 수정: 현재 사용 중인 버전에 맞추어 .toBodilessEntity() 메서드를 사용하여 명시적으로 동작을 유지할 수 있습니다.

이 부분은 댓글 api delete test 에러라는 유사한 문제를 다룬 게시물에서 이미 논의된 바 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

JaeHong님의 프로필 이미지

작성한 질문수

질문하기