Skip to content

Latest commit

 

History

History
68 lines (55 loc) · 2.5 KB

@RequestBody.md

File metadata and controls

68 lines (55 loc) · 2.5 KB

@RequestBody, @ResponseBody

카카오톡 플러스친구 챗봇을 개발하던 중 @RequestBody를 사용할 일이 생긴 김에 공부하여 정리

1. @RequestBody

  • @RequestMapping에 의해 POST 방식으로 전송된 HTTP 요청 데이터를 String 타입의 body 파라미터로 전달한다.
  • @RequestBody를 사용하지 않은 경우 : query parameter, form data를 object에 맵핑한다.
  • @RequestBody를 사용하는 경우 : body에 있는 data를 HttpMessageConverter를 이용해 선언한 object에 맵핑한다.

사용 예시 (카카오톡 플러스친구 챗봇 코드 중 일부)

@RequestMapping(value = "/message", method = RequestMethod.POST)
  public ResponseMessageVO message(@RequestBody RequestMessageVO vo) {

    ResponseMessageVO res_vo = new ResponseMessageVO();
    MessageVO mes_vo = new MessageVO();
    String command = vo.getContent();
    
    if(command.equals("메뉴")) {
      
    }
   
    ~~~
    
    res_vo.setMessage(mes_vo);
    return res_vo;
}
  • 위에서 @RequestBody를 사용하여 사용자가 보낸 json 형식의 메세지 데이터를 String 타입의 body 파라미터로 받아서 RequestMessageVO 객체에 담는다.
  • 그리고 객체에 담긴 String 데이터를 if문에서 비교하여 사용한다.

2. @ResponseBody

  • @ResponseBody 어노테이션이 @RequestMapping 메서드에서 적용되면 해당 메서드의 리턴 값을 HTTP 응답 데이터로 사용한다.

사용 예시

  • 임의의 Response 객체 생성
    public class ResponseTransfer {
        private String text; 
    
        // standard getters/setters
    }
  • @Response 사용
    @Controller
    @RequestMapping("/post")
    public class ExamplePostController {
    
        @Autowired
        ExampleService exampleService;
    
        @PostMapping("/response")
        @ResponseBody
        public ResponseTransfer postResponseController(
          @RequestBody LoginForm loginForm) {
            return new ResponseTransfer("Thanks For Posting!!!");
         }
    }
  • 결과
    {"text":"Thanks For Posting!!!"}

* Reference