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로 전환된다.
열심히 정리했으니까 다음부턴 헷갈리지 말아야겠다 .. 😳
'프로그래밍 > 스프링, 스프링부트' 카테고리의 다른 글
[Spring Boot] JavaMail을 이용하여 메일 전송하기 (+ PostMan) (1) | 2023.07.13 |
---|