본문 바로가기
Spring/10. rest-api

ResponseEntity의 메서드들

by 989898 2025. 3. 16.

ResponseEntity는 Spring에서 HTTP 응답을 정확히 제어할 수 있게 해주는 클래스입니다. HTTP 상태 코드, 응답 본문(body), 헤더(headers)를 모두 설정할 수 있으며, REST API를 작성할 때 매우 자주 사용됩니다.

다음은 ResponseEntity를 사용할 때 꼭 알아야 하는 주요 메서드들입니다.

📌 1. ResponseEntity.ok()

  • HTTP 상태 코드 200 OK를 반환합니다.
  • 주로 요청이 성공적으로 처리되었을 때 사용합니다.

사용 예시:

return ResponseEntity.ok(user);
 

또는 헤더와 함께 사용:

return ResponseEntity.ok()
        .header("Custom-Header", "value")
        .body(user);
 

📌 2. ResponseEntity.created()

  • HTTP 상태 코드 201 Created를 반환합니다.
  • 새로운 리소스가 생성되었을 때 주로 사용합니다.
  • Location 헤더에 새 리소스의 URI를 설정할 수 있습니다.

사용 예시:

URI location = URI.create("/api/users/" + user.getId());
return ResponseEntity.created(location).body(user);
 

📌 3. ResponseEntity.noContent()

  • HTTP 상태 코드 204 No Content를 반환합니다.
  • 삭제 요청 등으로 응답 본문(body)에 추가적인 데이터가 필요 없을 때 사용합니다.

사용 예시:

return ResponseEntity.noContent().build();
 

📌 4. ResponseEntity.badRequest()

  • HTTP 상태 코드 400 Bad Request를 반환합니다.
  • 클라이언트의 요청이 잘못된 경우(파라미터 누락, 유효성 검사 실패 등)에 사용합니다.

사용 예시:

return ResponseEntity.badRequest().body("Invalid request parameter");
 

📌 5. ResponseEntity.notFound()

  • HTTP 상태 코드 404 Not Found를 반환합니다.
  • 요청한 리소스를 찾지 못했을 때 사용합니다.

사용 예시:

return ResponseEntity.notFound().build();
 

또는 메시지와 함께:

return ResponseEntity.status(HttpStatus.NOT_FOUND)
        .body("User not found");
 

📌 6. ResponseEntity.status()

  • 원하는 HTTP 상태 코드를 직접 지정하여 반환할 수 있습니다.

사용 예시:

return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
        .body("Internal server error occurred");
 

또는 숫자로 직접 지정도 가능합니다:

return ResponseEntity.status(500)
        .body("Internal server error occurred");
 

📌 7. ResponseEntity.accepted()

  • HTTP 상태 코드 202 Accepted를 반환합니다.
  • 요청이 받아들여졌지만 처리가 아직 완료되지 않았을 때 사용합니다(비동기 처리 등).

사용 예시:

return ResponseEntity.accepted().body("Request accepted and processing");
 

📌 8. ResponseEntity.unprocessableEntity()

  • HTTP 상태 코드 422 Unprocessable Entity를 반환합니다.
  • 요청 구문은 맞지만, 의미적으로 처리할 수 없을 때 사용합니다(유효성 검사 실패 등).

사용 예시:

return ResponseEntity.unprocessableEntity()
        .body("Validation failed for provided data");
 

📌 9. ResponseEntity.internalServerError()

  • HTTP 상태 코드 500 Internal Server Error를 반환합니다.
  • 서버 내부 오류가 발생했을 때 사용합니다.

사용 예시:

return ResponseEntity.internalServerError()
        .body("Internal server error occurred");
 

📌 10. 헤더 추가하기 (.headers())

응답에 추가적인 헤더 정보를 설정할 수 있습니다.

사용 예시:

HttpHeaders headers = new HttpHeaders();
headers.add("Custom-Header", "value");

return ResponseEntity.ok()
        .headers(headers)
        .body(user);
 

또는 빌더 패턴으로 간단하게:

return ResponseEntity.ok()
        .header("Custom-Header", "value")
        .body(user);
 

📌 🎯 정리 (꼭 기억해야 할 메서드 요약)

메서드 설명 자주 쓰이는 상황
.ok() 200 OK 정상적인 처리
.created() 201 Created 새 리소스 생성
.noContent() 204 No Content 삭제 성공
.badRequest() 400 Bad Request 잘못된 요청
.notFound() 404 Not Found 리소스 없음
.status() 원하는 상태코드 지정 특정 상태코드 지정
.accepted() 202 Accepted 비동기 처리
.unprocessableEntity() 422 Unprocessable Entity 유효성 검사 실패
.internalServerError() 500 Internal Server Error 서버 내부 오류
 

위 메서드들은 REST API 개발 시 매우 자주 사용되는 핵심 메서드들입니다. 이 메서드들을 잘 활용하면 클라이언트에게 명확하고 정확한 응답을 전달할 수 있습니다! 😊

'Spring > 10. rest-api' 카테고리의 다른 글

RestControllerAdvice란?  (0) 2025.03.17
ResponseEntity 작성 규칙 + build()가 붙는 경우  (0) 2025.03.17
@PathVariable / @RequesteBody / @RequestParam  (0) 2025.03.16
REST API 예제  (0) 2025.03.14
HttpMessageConverter  (0) 2025.03.14