首页 > 解决方案 > 如何将多个 Map/List/Array 从 API url 传递到 Java 中的 RestController?

问题描述

我有一个接受 ArrayList、HashMap 和 List 作为参数和其他参数的方法。

methodName(String request,
            ArrayList<String> referenceList, 
HashMap<String, String> params,
 Map<String, List<?>> inClause,
boolean isClassicFlatSuggestionBox) throws Exception {};

现在我知道如何从 url 接受普通字符串参数和单个 Map/List。

http://localhost:8888/restApi/getSuggestionData/sa/warehouse?number=20,age=4

这个 url 返回 2 个 Path 变量 String 参数和 Controller 的数字和年龄映射,如下所示

public ResponseEntity<Collection<?>> getSuggestionList(@PathVariable("request") String request,@PathVariable("reference") String reference, @RequestParam HashMap<String, String> params)

但是如何通过多个地图?我不能把所有东西都放在一张地图上,然后在控制器端玩。有没有办法直接在控制器端获取多个地图/列表?

标签: javaspringapispring-mvcmodel-view-controller

解决方案


我建议将其更改为 POST 并添加包含必要对象的有效负载。然后您的控制器方法将如下所示:

    @POST
    public ResponseEntity<Collection<?>> getSuggestionList(
             @PathVariable("request") String request, @PathVariable("reference") String reference, @RequestBody() Payload payload) { }

Payload 类包含您想要的列表:

public class Payload {

    @XmlElement
    private ArrayList<String> referenceList;

    @XmlElement
    private HashMap<String, String> params;

    // getters and setters here or Lombok :)
}

推荐阅读