1. 정의

    1. HTTP 응답의 모든 정보를 담는 스프링 클래스
  2. 쓰는 이유

    1. 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
    	}
    	
    }
    
  3. 특징과 이유

    1. Response Status Code 설정 : ResponseEntity 객체를 생성할 때 Status Code를 명시적으로 제공할수 있다.
    2. Response Header 조작
      1. Response에 필요한 HTTP Header를 추가하거나 변경이 가능하다.
      2. 이를 통해 캐싱적책, 내용 유형, CORS Header 설정 등을 세밀하게 조정할 수 잇다.
    3. Response Body 관리
      1. ResponseEntity는 Response body에 직접 객체를 설정할 수 있으며, Spring의 메시지 컨버터를 통해 객체를 JSON이나 XML등의 형식으로 자동 변환할 수 있다.
  4. 요소들의 특징

ResponseEntity<T> responseEntity = new ResponseEntity<>(body, headers, status);
  1. T: Response Body의 타입
  2. body: Response Body 객체
  3. headers: 설정할 HTTP Header
  4. status: HTTP Response Status Code
  5. Detail
    1. ok()
      1. 이 메서드는 HTTP 200 Status Code와 함께 Response를 생성한다. 이는 가장 일반적으로 사용되는 메서드 중 하나이다.
    2. status()
      1. status() 에서드를 사용하면 특정 HTTP Status Code를 직접 설정할 수 있다. 이는 가장 유연한 Response 처리가 필요할 때 유용하다.
    3. notFound()
      1. 이 메서드는HTTP 404 Status Code를 설정할 때 사용한다. 자원을 찾을 수 없을 때 클라이언트에세 명확하게 알려줄 수 있다.
    4. badRequest()
      1. 이 메서드는 HTTP 400 Status Code와 함꼐 Response를 생성할 때 사용된다. 입력 데이터에 오류가 있을 때 유용하게 사용할 수 있다.
    5. created()
      1. 메서드는 HTTP 201 Status Code와 함께 Response를 생성할 때 사용된다. 새로운 resource가 성공적으로 생성되었을 때 이 메서드를 사용할 수 있다.
    6. noContetn()
      1. 이 메서드는 HTTP 204 Status Code와 함께 Response를 생성할 때 사용된다. 주로 삭제 요청이나 업데이트 후 body가 필요없는 경우에 사용된다.
    7. accepted()
      1. 이 메서드는 HTTP 202 Status Code와 함께 Response를 생성할 때 사용된다. 처리가 아직 완료되지 않았지만 시작되었음을 클라이언트에 알릴 때 사용할 수 있다.