inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발

JPA를 이용한 개별 사용자 상세 조회 - HTTP Get method

리턴타입으로서 EntityModel<User> 와 ResponseEntity질문

103

창신동 장첸

작성한 질문수 115

0

이전 학습에서 /users/{Id} 에 맵핑된 retrieveUser 메소드의 리턴타입을 EntityModel<User> 로 정의했습니다.

따라서 아래와 같은 리턴문으로 마쳤습니다.

return entityModel;

 

반면, 이번 수업에서는 리턴타입을 ResponseEntity로 정의하셨고

return ResponseEntity.ok(entityModel);

로 마무리 됐습니다.

 

두 방식 모두 포스트맨에서 테스트할 때 동일한 결과를 확인할 수 있었는데요.

어떤 차이로 두 수업에서 리턴타입을 구별하셨는지 궁금합니다~!

rest-api spring-boot

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 창신동 장첸님!

EntityModel와 ResponseEntity>의 차이에 대해 잘 이해하신 것 같아 기쁘네요. 두 방식 모두 포스트맨 테스트에서는 비슷한 결과를 얻을 수 있지만, 리턴방식에서의 차이가 있습니다.

  1. EntityModel: 이 방식은 주로 HATEOAS(Hypermedia as the Engine of Application State)를 구현할 때 사용됩니다. EntityModel을 직접 반환하면, 해당 리소스에 관련된 링크 정보를 포함해서 클라이언트에게 제공할 수 있습니다. 하지만 HTTP 상태 코드나 헤더 정보와는 관련이 없기 때문에 기본 HTTP 응답 상태 코드(예: 200 OK)로 응답합니다.

  2. ResponseEntity>: 이 방식은 HTTP 응답 메시지의 다양한 세부 사항을 제어할 수 있는 유연성을 제공합니다. 예를 들어, HTTP 상태 코드(예: 200 OK, 404 Not Found 등), 헤더 설정, 그리고 바디(EntityModel 포함)를 모두 제어할 수 있습니다. ResponseEntity를 사용하면 보다 명시적으로 응답의 메타 데이터를 컨트롤할 수 있습니다.

차이를 구별한 이유는 상황에 따라 다릅니다:

  • 만약 HTTP 상태 코드나 추가적인 헤더가 중요한 경우에는 ResponseEntity를 사용하는 것이 적절합니다. 예를 들어, 클라이언트에게 명확한 오류 메시지나 리소스 생성 여부를 전달할 필요가 있을 때 유리합니다.
  • 단순히 리소스와 링크 정보만 전달할 경우에는 EntityModel만으로 충분합니다.

이러한 차이를 이해하고 활용하면, API 설계에서 더 나은 유연성과 명확성을 제공할 수 있습니다.

이 주제와 관련하여 더 자세히 알아보실 수 있는 유사한 질문이 있습니다. 다음 URL을 참고해 주세요:

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

JPA

0

57

1

jpa dependency를 추가하고 SecurityConfig클래스에서 오류가 납니다.

0

68

1

웹 브라우저 400 bad request

0

70

1

@Size는 되는데 @Past는 안 됩니다.

0

61

1

pdf 자료는 없나요?

0

73

2

locale 정보가 null 이면 무조건 messages_ko.properties이 호출 되는 문제

0

87

2

Swagger 강의, Unable to infer base url 이거 뜨시는 분들 도움되시라고

0

118

1

강의에서나온 화면 피피티

0

158

1

HelloWorldBean 관련 에러

0

182

2

Swagger API 3.x 오류..

0

218

1

java: variable message not initialized in the default constructor 에러는 어찌하면 좋을까요?

1

282

1

현재 GIT에 올리신 소스를 실행해봤습니다.

0

189

2

고양이 소리가 귀엽네요 !!

0

137

2

git에서 소스받고 실습중인데

0

117

1

post가 안되요

0

102

1

한국어 같은 경우 언어코드인 messages_ko.properties 로 생성하는게 더 좋지 않나요?

0

167

2

예외처리쪽 관련 질문있습니다.

0

159

2

엔티티가 바로 응답으로 나가도 되나요??

0

220

2

안녕하세여 Cannot invoke "co.kr.joneconsulting.resfulservice.repository.PostRepository.save(Object)" because "this.postRepository" is null

0

135

2

사용자 등록하고 나서 H2 에서 보면 신규 사용자의 password, ssn 이 null 로 되어 있습니다.

0

140

2

ApplictionContext 질문

0

190

2

롬북이 안먹히는것같아요

0

156

1

인텔리제이에서스프링부트 파일 실행하면

0

239

1

맞는 의존성 주입

1

180

1