본문 바로가기

프로그래밍/스프링, 스프링부트

[SpringBoot] @RequestBody, @ResponseBody 차이

 

Spring을 공부하다가.. RequestBody와 ResponseBody가 헷갈려서 정리해보려한다.

공부하면서 알게된 점을 작성하는 것으로, 잘못된 정보가 있으면 댓글로 알려주시면 감사하겠습니다. 😊

 

RequestBody와 ResponseBody는 보통 함께 사용되며, 비슷한 방식으로 동작한다.

두가지는 XML이나 JSON 기반의 데이터를 주고받는 REST에서 주로 사용된다.

 

🔎 @RequestBody

어노테이션이 붙은 파라미터는 HTTP 요청의 'body' 가 그대로 전달된다.

파라미터가 있으면, 파라미터 타입을 확인하고, 처리할 수 있는게 있다면 body를 통째로 변환하여 파라미터를 전달 해준다.

 

🔎 @ResponseBody

RequestBody 에서는 들어온 요청의 body를 전달 받는 것이라면,

ResponseBody 에서는 리턴하는 데이터를 메시지 컨버터를 통해 HTTP 응답의 메시지 'body'로 전환된다.

 

@RestController 에서는 return 값에 자동으로 해당 어노테이션이 붙게 된다.

따라서 해당 controller가 전부 REST 방식(JSON)으로 동작한다면 상단에 @RestController를 기입해 주도록 하자!! 😣

 

예제
@ResponseBody
@GetMapping("/book/{isbn}")
public Book detail(@PathVariable String isbn) {
    Book book = service.showDetail(isbn); // book 정보를 받아오는 service!
    return book;
}

위의 코드가 실행 되면 아래와 같은 JSON 메시지가 응답 메시지의 body로 설정되어 클라이언트로 보내 질 것이다.

{"isbn": "11-222-333", "title": "좋은 책", "author": "홍길동"}

 

위의 내용이 짧고 간단하지만 다시 한번 배운 내용을 토대로 요약해보자면,

1. @RequestBody와 @ResponseBody 는 REST에서 주로 사용되며
2. Request : 클라이언트의 "요청 body" 가 그대로 전달된다.
3. Response : 서버측의 "응답 메시지"가 body로 전환된다.

 

열심히 정리했으니까 다음부턴 헷갈리지 말아야겠다 .. 😳

Recent Posts
Popular Posts