3. Back-end/3-1. Spring MVC - 국비

Spring MVC - [ Ajax - @requestBody / @responseBody ]

yunyj99 2022. 7. 5. 12:07

JAVA에는 JSON이라는 데이터 타입이 없어서 JSON데이터에 대한 처리를 하는 라이브러리를 추가해야 한다.

대표적으로 Jackson, Gson, SimpleJSON과 같은 라이브러리가 있는데, 나는 스프링부트에서 공식적으로 사용하는 Jackson 라이브러리를 사용했다.


1. @RequestBody

- @requestBody : 브라우저에서 전달된 JSON 형태의 데이터를 객체로 자동 전환(객체 내 동일 이름의 요소로 변환)

 

 


ajax에서 member 객체를 생성 후 JSON.stringify 메서드를 이용해 JSON 형태로 전달

   * 객체를 전달하므로 전송방식은 'POST'

   * JSON.stringify를 이용해 JSON데이터를 String으로 형변환 했다. 이때 전달할 데이터가 JSON형태로 이루어진 데이터임을 알려주기 위해 contentType 속성값을 "application/json"로 지정해야 한다.

 

 

RESTController에서 매개변수에 @RequestBody 애노테이션 이용해 전달받은 JSON 데이터를 객체에 받을 수 있음

 

* 요즘 나온 스프링 버전에서는 json을 String으로 파싱 & contentType 지정이 필요없다고 한다. (5.xx 버전 ~)

  컨트롤러에서도 객체로 받을 때 @RequestBody 애노테이션을 쓸 필요가 없다.


2. @ResponseBody

@ResponseBody : REST 방식의 반환 데이터를 객체에서 JSON 형태로 변경. 즉 전달되는(return되는) 객체를 JSON으로 전환

* RESTController는 Controller + ResponseBody임. 따라서 @ResponseBody 애노테이션을 따로 붙여 줄 필요 없음.

* 단순 문자열은 문자열로, 객체/List<객체> 는 JSON으로 반환됨

 

 


* RESTController에서 반환 값 참조

https://kkangdda.tistory.com/39

 

RESTful(4) - @RestController 사용하기 (단순문자열, 객체타입, List타입, Map타입)

@RestController → @Responsebody없이도 처리됨 (생략) @Controller와는 다르게 @RestController는 리턴값에 자동으로 @ResponseBody를 붙게되어 HTTP 응답데이터(body)에 자바 객체가 매핑되어 전달 된다고 한다..

kkangdda.tistory.com

 

 


참조