如何使用Postman将地图<integer,string =“”>作为@RequestParam插入

时间:2017-09-19 15:30:03

标签: java spring postman

首先,对不起我的英语,这不是我的主要语言,我不确定这个问题是完全可以理解的。

收到Map作为Rest Web Service的@RequestParam后,我需要做一些查询。

我正在尝试使用Postman调用Web服务,这是完整的POST请求     http://localhost:8080/CDRestApi/rest/cd/esibizione/getIdUdFromIstanzaMetadatoByMap/5/map?25=ALAN&26=IANESELLI

这是我的WS代码:

    @RequestMapping(value = { "/getIdUdFromIstanzaMetadatoByMap/{id}/map" }, method = RequestMethod.POST, produces = {
        MediaType.APPLICATION_JSON_VALUE })
@ResponseBody
public String selectIstanzaMetadato(@PathVariable Long id,
                                    @RequestParam (value="map", required=true) Map<Integer,String> mapQuery) {

    Integer key = 25;
    System.out.println(mapQuery.get(key));
    return mapQuery.get(key).toString();
}

这是邮递员的回答:

{
"timestamp": 1505834218902,
"status": 500,
"error": "Internal Server Error",
"exception": "java.lang.NullPointerException",
"message": "No message available",
"path": "/CDRestApi/rest/cd/esibizione/getIdUdFromIstanzaMetadatoByMap/5/map"

}

System.out打印是:

17:16:58,891 INFO  [stdout] (default task-4) null

我认为mapQuery对象没有值,因为它没有正确定价

我已经看过那些帖子,但它们对我没用: Map<String, String> as @RequestParam in Spring MVCSpring MVC + RequestParam as Map + get URL array parameters not working

我是否错过了正确的Postman POST请求?或者这是网络服务本身的问题?

1 个答案:

答案 0 :(得分:1)

我解决了这个问题,将地图转换为地图。

Map<Integer, String> mappaQuery = mapQuery.entrySet().stream().collect(Collectors.toMap(e -> Integer.parseInt(e.getKey()), Map.Entry::getValue));

效率不高,但它适用于邮差调用的测试目的;在WS的真实调用中,我可以传递一个合适的Map对象。