使用 RestTemplate - 如何将参数中的列表或数组从客户端传递到服务器

Using RestTemplate - how to pass List or Array in parameter from client to server

我有一个 List<Integer> 想在参数中发送到服务器,有什么方法 Spring 对此提供支持吗?

我试过使用下面的代码,

restTemplate.exchange("http://xxx.xx.xx.xx:8081/api/cart-items?cartItemsId={cartItemsId[]}", 
            HttpMethod.POST, httpEntity, Void.class, ArrayUtils.toPrimitive(cartItemsId.toArray(new Integer[cartItemsId.size()])));

但它会向服务器发送如下内容:

http://xxx.xx.xx.xx:8081/api/cart-items?cartItemsId=%5BI@18275d8c

如果我使用也会出现同样的问题:

restTemplate.exchange("http://xxx.xx.xx.xx:8081/api/cart-items?cartItemsId={cartItemsId[]}", 
            HttpMethod.POST, httpEntity, Void.class, cartItemsId);

restTemplate.exchange("http://xxx.xx.xx.xx:8081/api/cart-items?cartItemsId={cartItemsId[]}", 
            HttpMethod.POST, httpEntity, Void.class, cartItemsId.toArray(new Integer[cartItemsId.size()]));

有什么方法可以使用参数将此列表或数组发送到服务器吗?

通过连接 List<Integer> 的元素构造一个 String 并将其作为 uri 变量提供。

String listOfIds = cartItemsId.stream().map(Object::toString).collect(Collectors.joining(","));
restTemplate.exchange("http://xxx.xx.xx.xx:8081/api/cart-items?cartItemsId={ids}",
    HttpMethod.POST, httpEntity, Void.class, listOfIds);