본문 바로가기
spring

[spring] @ResponseBody Annotation vs ResponseEntity

by moonsiri 2020. 10. 31.
728x90
반응형
  • @ResponseBody annotation을 사용하면 스프링이 반환 객체를 http response body로 변환합니다.
  • ResponseEntity는 @ResponseBody annotation과 유사하게 작동합니다. 그러나 ResponseEntity 객체를 생성할 때 response header를 http response에 추가할 수도 있습니다.
  • responseEntity를 반환 객체로 사용하는 경우 @ResponseBody annotation을 사용할 필요가 없습니다.

 

 

예제) @ResponseBody annotation 사용

@ResponseBody
@RequestMapping("/getData")
public ResJsonVO getData(DataVO param) {
	try {
		return testService.getData(param);
	} catch (Exception e) {
		log.error(e.getMessage(), e);
		return Res.FAIL_SYSTEM_ERR;
	}
}

 

예제) ResponseEntity 사용

@RequestMapping("/getData")
public ResponseEntity<Object> getData(DataVO param) {
	try {
		return ResponseEntity.ok(testService.getData(param)); // return 200 status
	} catch (Exception e) {
		log.error(e.getMessage(), e);
		return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); // return 500 error
	}
}

 

Ajax로 결과를 return 받을때, @ResponseBody로 넘긴 값들은 success에서 따로 오류 처리를 해야하지만, ResponseEntity로 값을 넘기면 상태에 따라 처리할 수 있습니다.

728x90
반응형

댓글