Web을 다루다 보면 HTTP프로토콜의 헤더를 다루는 경우도 종종 있다. 스프링 MVC 의 사상은 HTTPServletRequest나 HTTServletResponse를 직접 핸들링 하지 않아도 이런 작업이 가능하도록 작성되었기 때문에 이러한 처리를 위해 ResponseEntiy를 통해서 원하는 헤더 정보나 데이터를 전달할 수 있다
ResponseEntity는 HttpHeaders 객체를 같이 전달할 수 있고, 이를 통해서 원하는 HTTP 헤더 메시지를 가공하는 것이 가능하다. ex07 의 경우 브라우저에서는 JSON 타입이라는 헤더 메시지와 200ok 라는 상태코드를 전송한다
음 여기서 ResponsEntity 를 사용하는 이유가 궁금할수도 있다.
Spring에서는 HttpEntity란 클래스를 제공하는데 이 클래스의 역할은 Http 프로토콜을 이용하는 통신의 header와 body 관련 정보를 저장할수 있게끔 한다고 한다 그리고 ResponseEntity 를 사용하게되면 404나, 500같은 에러를 전송하고 싶은 데이터와 함께 전송할 수 있기 때문에 좀 더 세밀한 제어가 가능해진다.
즉 통신 메시지 관련 header와 body의 값들을 하나의 객체로 저장하는 것이 HttpEntity 클래스 객체이고 , Request 부분일 경우 HttpEntity를 상속받은 RequestEntity가, Response 부분일 경우 HttpEntity를 상속받은 ResponseEntity가 하게 된다
@ResponseBody나 ResponseEntity를 return 하는거나 결과적으로는 같은 기능이다 하지만 구현 방법이 틀리다 @ResponseBody의 경우 파라미터로 Response 객체를 받아서 이 객체에서 header를 변경시켜야 하고..ResponseEntity에서는 이 클래스 객체를 생성한뒤 객체에서 header 값을 변경시키면 된다. api문서에서도 확인 가능하다
'Spring' 카테고리의 다른 글
Spring Boot 프로젝트 만들기 (0) | 2021.01.11 |
---|---|
SpringController(Exception) 처리 (0) | 2020.12.05 |
스프링 MVC Controller(@InitBinder) (0) | 2020.12.03 |
스프링 MVC Controller (0) | 2020.12.03 |
@PathVariable(스프링 지향) (0) | 2020.12.01 |