본문 바로가기

Spring

스프링 MVC Controller(ResponseEntity) 타입

반응형

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