반응형

3rd Party API를 jquery 단에서 여러번 호출해야 하는 일이 있는데, network latency 등 여러가지 이슈가 있기 때문에,

front단에서 한 번에 묶어서 보내고, back단에서 처리되게끔 하다보니, jquery 단에서 array형태로 묶어서,

back단(Spring)에서 List형태의 Model로 받아서 처리하니 깔끔하게 정리가 되어서, 이 방법에 대해 정리한다.


[Jquery]

var arr = [{"a":1, "b":2}, {"a":2, "b":4}];

$.ajax({
    url: 'url',
    , type: 'post'
    , dataType: 'json'   // 데이터 타입을 Json으로 변경
    , contentType: 'application/json'   // Content-Type을 Json으로 변경
    , data: JSON.stringify(arr)    // JSON String으로 전환하여 보낸다.
    , success: function(response) {
    }
});


위와 같이 전송을 하면, 서버에서는 javascript의 array를 Json Array로 인식을 하기 때문에, 

application/json 기반의 서비스라면, List Model로 매핑을 할 수가 있다. (Spring Boot가 기본 MessageConverter가 마침 Json이어서 이렇게 사용했다.)


[Spring Boot]

...
@Getter
@Setter
@ToString
public class Abc {
    Abc() { }

    private int a;
    private int b;
}

@PostMapping("url")
public void url(@RequestBody List abcs) {
    abcs.stream().forEach(abc -> {
        System.out.println(abc.toString());
    });
}
...


원하는 형태로 List로 잘 매핑이 된다.

반응형
,