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 |