개발/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 어노테이션을 붙여서 받고
원하는 형태의 객체로 받으면 된다.