본문 바로가기

JAVA

@RequestBody VS @ResponseBody 이해해보기!

@RequestBody


RequestBody 어노테이션은 HttpRequest의 분문 RequestBody의 내용을 자바 객체로 매필하는 역할을 한다.

해당하는 어노테이션이 붙어있는 메서드로 클라이언트의 요청이 들어왔을때 ,

DispatcherServlet에서는 먼저 해당 HttpRequest의 미디어타입을 확인하고 타입에 맞는 MessageConverter를 통해 요청 분문인 RequestBody를 통째로 변환해서 메서드로 전달해주게 됩니다,

 

주의할점!

일반적인 GET 메서드의 요청 경우에는 HttpRequest의 requestBody로 요청데이터가 전달되는것이 아니라 URL또는 URL의 파라미터로 전달되기때문에 @RequestBody어노테이션을 통해 해당요청 내용을 받을수가없다.

그래서 GET메서드의경우 @PathVariable, @RequestParam 등의 어노테이션을 통해서 요청을 받아야한다.


@ResponseBody


@ResponseBody 어노테이션은 자바 객체 를 HttpResponse의 본문 responseBody의 내용으로 매핑하는 역할을 합니다.

해당 어노테이션도 마찬가지로 return type에 맞는 MessageConverter를 통해 return 하는 객체를 해당타입으로 변환해서 클라이언트에게 전달할게된다.

위 예시 코드를 보면 @ResponseBody가 생략되었는데 그 이유는 Controller에 붙은 @RestController때문이다.

 

@RestController어노테이션을 명시했다면 따로 @ResponseBody 어노테이션을 명시하지않아도 자동으로 HttpResponse의 본문 responseBody에 자바객체가 매핑되어 전달됩니다.

 

반응형