개발/Spring

AJAX로 JSON 보내서 컨트롤러(서버)에서 받기

신매력 2021. 9. 24. 16:13

[{'fruit1':'apple', 'fruit2':'banana'}]

위와같은 형태를 서버에서 List<Map<String, Object>>로 받게 하려면

 

 

1. 클라이언트 - javascript

let param = [{'fruit1':'apple', 'fruit2':'banana'}]

$.ajax({
  type:'post'
  , contentType:'application/json'
  , data: JSON.stringify(param)
  , url: '/test'
  , success: function(data) {
    alert(data);
  }, error:function(e) {
    alert("error: " + e);
  }
});

- Request의 Method는 GET이 아닌 메소드로 

  (Request Body에 JSON을 담아 보낼 것이기 때문이다. GET은 Request Body가 없다.)

- Request의 content가 json으로 넘어갈 것이라는 것을 명시

- JSON.stringify(param) 함수로 JSON 문자열로 보낸다.

 

참고로 저 위에는 없지만 dataType은 request에 대한 정보가 아니라 response에 대한 정보의 키이므로

dataType에 JSON이라고 명시해봤자 결과 응답값이 JSON이라는 뜻이다.

 

 

2. 서버 - Controller

@ResponseBody
@PostMapping("/test")
public List<Map<String, Object>> test(
  @RequestBody List<Map<String, Object>> param) {

  return param;
}

- Request Method는 Post로 받았다.

- JSON으로 넘어온 내용은 Request Body에 담겨져 오므로 @RequestBody 어노테이션을 붙여서 받고

원하는 형태의 객체로 받으면 된다.