프로필사진
owgno6
CODELIB
Recent Posts
Recent Comments
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total

티스토리 뷰

Spring

@RequestBody와 @ResponseBody 개념

owgno6 2018. 12. 3. 09:45

Spring에서 API 구현시 주로 사용되는 @ResquestBody, @ResponseBody 어노테이션의 개념 대해 확실하게 알고 넘어가자.




예를들어 웹페이지에서 json으로 request한 파라미터들을 java에서 받으려면 java object로의 변환이 필요하며 

마찬가지로 response 시에도 java object에서 json으로 변환이 필요하다.


이러한 작업들을 해주는 어노테이션이 바로 @RequestBody 와 @ResponseBody 이다. 

컨트롤러에 두 어노테이션을 추가해주면, JSON이나 key/value 방식 xml 등으로 송수신 할 수 있다.




@RequestBody 어노테이션이란?


HTTP 요청의 body 내용을 자바 객체로 매핑하는 역할을 합니다.

 


@ResponseBody 어노테이션이란?


자바 객체를 HTTP 요청의 body 내용으로 매핑하는 역할을 합니다.



  예제소스

1
2
3
4
5
6
7
8
9
10
11
12
13
@RestController
public class LoginWebController 
{
 
    // HTTP 요청의 내용을 Member 객체에 매핑하기위해 @RequestBody 애너테이션을 설정한다.
    @RequestMapping(value="/member/login", method = RequestMethod.POST)
    public MemberResultDto login(@RequestBody Member member) 
    {
    MemberResultDto memberResultDto = memberService.login(member); 
    return memberResultDto;
 
    }
}
cs





- 위의 예제 소스에서는 HTTP 요청의 body안에 Member 데이터를 파라미터로 받기위해, 

  @RequestBody를 사용하였습니다.

  @ResponseBody를 사용하지 않은 이유는 @RestController를 사용하였기 때문입니다. 

  @Controller와는 다르게 @RestController는 리턴값에 자동으로

  @ResponseBody를 붙게되어 HTTP 응답데이터(body)에 자바 객체가 매핑되어 전달됩니다.

 ( ※ @Controller인 경우에는 @ResponseBody를 적어줘야 합니다. )








그 외 자주 사용되는 @RequestMapping 속성 


@Consumes : 수신 하고자하는 데이터 포맷을 정의한다. 

@Produces : 출력하고자 하는 데이터 포맷을 정의한다.



댓글