작성
·
68
답변 1
0
안녕하세요. 조소영님, 공식 서포터즈 y2gcoder입니다.
@RequestParam, @RequestBody는 HTTP 요청에서 데이터를 어떻게 전송하느냐에 따라 다릅니다!
만약 HTTP 요청 시 데이터를 Form 혹은 쿼리 파라미터 등으로 보낸다면 @RequestParam으로 받을 수 있고, JSON 요청과 같이 HTTP 요청 본문에서 바로 값을 받을 때는 @RequestBody로 값을 받을 수 있습니다.
결론은 @RequestBody를 사용해도 Map<String, Object>타입으로 값을 받을 수 있습니다 🙂
감사합니다.
마지막으로 질문 하나 더있습니다
컨트롤러에서 map으로 받으면 잭슨컨버터가 적용되고 content-type이 text/xml이면 에러가 발생하는것이 맞나요?
아니면 xml컨버터가 작용하고 content-type이 text/xml로 적용되서 컨트롤러에서 map으로 받는건가요?
XML 또한 JSON 과 같이 타입에 맞는 HttpMessageConverter가 작동한다고 이해해주십쇼!
HttpMessageConverter(MappingJackson2XmlHttpMessageConverter)가 HTTP 요청 본문의 XML을 읽어 Map<String, Object> 로 파싱해서 컨트롤러로 전달해주게 됩니다.
감사합니다!
추가 질문이 있습니다
요청시 Content-type이 text/xml이면 @Requestbody로 받는것이 맞을까요?