작성
·
278
3
System.out.println("location = " + location);를 찍어보니
"location = http://localhost:8088/users/4"
이렇게 나오는데 이건 User 데이터 클래스와 다른데 왜 응답 형태를
ResponseEntity<User> 이렇게 하는지 궁금합니다.
답변 1
9
안녕하세요, 이도원입니다.
@ResetController를 사용하면서 메소드의 반환 값으로 ResponseEntity를 사용하지 않아도, String, Object, Map<String, String>등과 같은 형태로도 클라이언트에 값을 전달할 수 있습니다. 그러나, ResponseEntity를 사용하게 되면, 반환 데이터를 위한 Response Status Code를 포함해서 전달할 수 있기 때문에, 단순하게 500에러나, 200 성공 코드이외의 다른 상태 값들도 전달할 수 있습니다.
createUser()에서 ResponseEntity를 사용한 목적은 HATEOS 기능을 사용해 보기 위함이고, 사용자의 생성과 동시에 상세보기를 하기 위해서 또다른 요청정보를 서버에 보내지 않더라도, 생성 작업의 결과로 상세정보를 위한 URL 값을 같이 얻기 위해서 입니다. 한번의 생성요청으로 상세보기를 위한 URL값을 같이 얻을 수 있기 때문에, 네트워크 비용이 발생하지 않게 됩니다.
감사합니다.