-
정의
- HTTP 응답의 모든 정보를 담는 스프링 클래스
-
쓰는 이유
- HTTP가 일반객체만 반환하면 항상 200OK만 나간다.
@GetMapping("/user/{id}")
public User getUser(@PathVariable Long id){
return userService,getUser(id); //즉 무조건 200
}
//상황에 맞는 상태 코드 반환 가능
@GetMapping("/user/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id){
User user = userService.getUser(id);
if(user != null){
return ResponseEntity.ok(user); //200 OK
}else{
return ResponseEntity.notFound().build(); // 404 Not Found
}
}
-
특징과 이유
- Response Status Code 설정 : ResponseEntity 객체를 생성할 때 Status Code를 명시적으로 제공할수 있다.
- Response Header 조작
- Response에 필요한 HTTP Header를 추가하거나 변경이 가능하다.
- 이를 통해 캐싱적책, 내용 유형, CORS Header 설정 등을 세밀하게 조정할 수 잇다.
- Response Body 관리
- ResponseEntity는 Response body에 직접 객체를 설정할 수 있으며, Spring의 메시지 컨버터를 통해 객체를 JSON이나 XML등의 형식으로 자동 변환할 수 있다.
-
요소들의 특징
ResponseEntity<T> responseEntity = new ResponseEntity<>(body, headers, status);
- T: Response Body의 타입
- body: Response Body 객체
- headers: 설정할 HTTP Header
- status: HTTP Response Status Code
- Detail
- ok()
- 이 메서드는 HTTP 200 Status Code와 함께 Response를 생성한다. 이는 가장 일반적으로 사용되는 메서드 중 하나이다.
- status()
- status() 에서드를 사용하면 특정 HTTP Status Code를 직접 설정할 수 있다. 이는 가장 유연한 Response 처리가 필요할 때 유용하다.
- notFound()
- 이 메서드는HTTP 404 Status Code를 설정할 때 사용한다. 자원을 찾을 수 없을 때 클라이언트에세 명확하게 알려줄 수 있다.
- badRequest()
- 이 메서드는 HTTP 400 Status Code와 함꼐 Response를 생성할 때 사용된다. 입력 데이터에 오류가 있을 때 유용하게 사용할 수 있다.
- created()
- 메서드는 HTTP 201 Status Code와 함께 Response를 생성할 때 사용된다. 새로운 resource가 성공적으로 생성되었을 때 이 메서드를 사용할 수 있다.
- noContetn()
- 이 메서드는 HTTP 204 Status Code와 함께 Response를 생성할 때 사용된다. 주로 삭제 요청이나 업데이트 후 body가 필요없는 경우에 사용된다.
- accepted()
- 이 메서드는 HTTP 202 Status Code와 함께 Response를 생성할 때 사용된다. 처리가 아직 완료되지 않았지만 시작되었음을 클라이언트에 알릴 때 사용할 수 있다.