Josh 성장일기
article thumbnail
Published 2023. 3. 2. 10:55
<Spring> ResponseEntity 에 대하여 Spring

- 초보개발자로써 잘못된 정보를 올릴 수 있으니 잘못된 점 바로잡아주시면 감사하겠습니다! -

ResponseEntity란?

ResponseEntity란, httpentity를 상속받는, 결과 데이터와 HTTP 상태 코드를 직접 제어할 수 있는 클래스이다.

ResponseEntity에는 사용자의  HttpRequest에 대한 응답 데이터가 포함된다.

 

 

ResponseEntity 의 인터페이스

구현된 인터페이스를 보면 파라미터 값에 <바디, 헤더, 상태코드> 형태로된 생성자가 있습니다.

 

Body    => 데이터 값이 들어가는 곳(json 형태로 front에서 받을 수 있음)

Header =>  웹서버가 웹브라우저에 응답하는 메세지(status 값 즉 성공했는지 여부 200,400 등의 메세지)

 

 

 

ResponseEntity의 사용방법 및 예시

저는 보통 생성자를 이용하여 ResponseEntity 객체를 사용합니다.

@PostMapping("/test")
public ResponseEntity<SetLikeDto.Response> test(@RequestBody TestDTO testDTO){
    TestData data = testService.testMethod(testDTO);

    return new ResponseEntity<>(HttpStatus.OK);
    return new ResponseEntity<>(data, HttpStatus.ACCEPTED);
    //지금은 header에 빈 값이 들어간, 비어있는 객체 -> 필요하다면 내용을 채워서 이렇게 생성해줄 수 있다.
    return new ResponseEntity<>(data, new HttpHeaders(HttpHeaders.EMPTY), HttpStatus.ACCEPTED);
}

결론

ResponseEntity 클래스를 사용하면, 결과값! 상태코드! 헤더값!을 모두 프론트에 넘겨줄 수 있고, 에러코드 또한 섬세하게 설정해서 보내줄 수 있다는 장점이 있다!

 

 

추가사항

2023.03.12 업데이트

공부하다가 알게된 사실인데 위의 예제코드 여태 ResponseEntity 객체를 생성자 형태로 사용하였지만, 

Constructot 형태보다는 Builder 형태로 사용하는 것을 권장한다고 합니다.

 

// 생성자 형태
return new ResponseEntity<MoveResponseDto>(moveResponseDto, headers, HttpStatus.valueOf(200));

// 빌더 형태
return ResponseEntity.ok()
    .headers(headers)
    .body(moveResponseDto);
profile

Josh 성장일기

@JoshDev

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그