컴퓨터 프로그래밍/Spring

[Spring] RequestEntity

한33 2024. 8. 30. 18:45

RequestEntity<>

// 일정 등록
@PostMapping("/todo")
public RegistTodoResDto createTodo(@RequestBody RegistTodoReqDto requestDto) {
    return todoService.createTodo(requestDto);
}
  • 기존 방식의 createTodo 메서드는 'RegistCommentResDto' 객체를 직접 반환하므로 클라이언트는 HTTP 응답 본문에서 이 객체만 받게 된다.
  • 이 방법은 단순하지만 HTTP 상태 코드나 헤더를 세밀하게 제어할 수 없다.
  • Spring은 자동으로 200 OK 상태 코드를 설정한다.

 

// 일정 등록
@PostMapping("/todo")
public ResponseEntity<RegistTodoResDto> createTodo(@RequestBody RegistTodoReqDto requestDto) {
    return ResponseEntity.ok(todoService.createTodo(requestDto));
}
// 일정 삭제
@DeleteMapping("/todo/{id}")
public ResponseEntity<Void> deleteTodo(@PathVariable Long id) {
    todoService.deleteTodo(id);
    return ResponseEntity.noContent().build();
}
  • 변경된 방식은 'ResponseEntity' 를 사용했는데, 이 방식을 이용하면 상태 코드, 응답 헤더, 응답 본문을 모두 포함할 수 있다.
  • 코드에서는 ResponseEntity.ok()를 사용하여 상태 코드 200 OK와 함께 RegistCommentResDto를 반환하도록 설정했다.

 

 

  • 추가적인 HTTP 응답 제어:
    • ResponseEntity를 사용하면 다른 상태 코드를 반환할 수 있다.
    • 예를 들어, 리소스가 생성되었음을 나타내기 위해 201 Created 상태 코드를 반환하거나, 입력 데이터에 문제가 있을 때 400 Bad Request를 반환하는 등의 작업이 가능합니다.
  • 향후 확장성:
    • 필요에 따라 응답 헤더를 설정하거나, 상태 코드를 동적으로 변경할 필요가 생길 경우 ResponseEntity를 사용하면 매우 유연하다.
    • 이 방식은 보다 복잡한 API를 구축하는 데 도움이 된다.

 

요약 : ResponseEntity<> 로 감싸주면 HttpStatusCode 202,201,200 등등 에러코드에 대한
것들을 정의해 놓은 객체를 멤버변수로 가지고 있기 때문에 향후 확장성이나 유지 보수 측면에서 훨 좋으니 그렇게 하자.