1) 스프링 프레임워크가 제공해주는 클래스임!
import org.springframework.http.ResponseEntity;
-> 따라서 우리가 따로 작성할 필요없이 가져다가 쓰면된다
2) HttpEntity 클래스를 상속받아 구현한 클래스이다.
public class ResponseEntity<T> extends HttpEntity<T>;
HttpEntity<String>entity=new HttpEntity<>(requestBody,headers);
@GetMapping("/user/{id}")
public ResponseEntity<User> getUserById(@PathVariable String id) {
User user = userService.findById(id);
if (user != null) { // 해당 id를 가지는 User가 존재하는 경우
return ResponseEntity.ok(user); //user는 JSON형태임
} else { // 존재하지 않는 경우
return ResponseEntity.notFound().build();
}
}
✅ SuccessReponse (성공 응답)
방법 1) ResponseEntity.ok(데이터);
방법 2) ResponseEntity.status(HttpStatus.OK).body(데이터);
✅ FailReponse (실패 응답)
* ResponseEntity.status(HttpStatus.ERROR_STATUS).body(errordetails);
- SuccessResponse의 json
{ "success":true, "message": "회원 정보 조회가 완료되었습니다.", "data":{ "id":1, "email":"google@gmail.com" }, "timestamp":"2023-04-23T01:45:23Z" }
- API 코드
@RestController public class MemberApi{ @GetMapping('/getUser') public ResponseEntity<Map<String,Object>> getUser{ Map<String,Object> response=new HashMap<>; Map<String,Object> userData=new HashMap<>; // userData.put("id",1); userData.put("email","google@gmail.com"); // response.put("success",true); response.put("message","회원 정보 조회가 완료되었습니다."); response.put("data",userData); response.put("timestamp","2023-04-23T01:45:23Z") // return ResponseEntity.ok(response); }
- 또다른 예시 코드
@GetMapping("boardList") public ResponseEntity<Message> BoardList(@RequestBody BoardDto boardDto){ Message message=new Message(); HttpHeaders headers=new HttpHeaders(); logger.info("boardList 진입"); try{ message.setStatus(StatusEnum.OK); message.setMessage("boardList 성공") message.setData(boardDto); } catch(Exception e){ logger.error("boardList"+e.getMessage(),e); } return new ResponseEntity<Message>(message,headers,HttpStatus.OK); }
* ResponseEntity<클래스명>
* return new ResponseEntity<클래스명>(body,headers,HttpStatus.OK);
-> <>에 들어가는 클래스명은 body의 클래스를 의미한다!
1) 상태 코드만 반환하는 경우
return new ResponseEntity<>(HttpStatus.OK);또는
return ResponseEntity.ok()
2) 모두 반환하는 경우 (상태코드+헤더+바디)
return ResponseEntity.status(HttpStatus.valueOf(errorReason.getStatus())).body(errorRespose);