小编典典

如何在GET调用中将地图作为请求参数发送

spring-boot

是否可以在GET调用中将map作为参数发送?我搜索了,我可以找到列表并设置集合。但是没有找到任何要收集地图的东西。

我尝试了以下方法,我的控制器方法如下所示。

@GetMapping("/test")
    public ResponseEntity<?> mapTest(@RequestParam Map<String,String> params) {

        LOG.info("inside test with map  "+  params );

        return new ResponseEntity<String>("MAP", HttpStatus.OK);
    }

我从邮递员发送了以下请求

http://localhost:8080/test?params={a:abc,b:bcd}

一切正常,没有错误和异常。但是我收到的地图看起来像key=params , value={a:abc,b:bcd}

我希望收到的地图像 key1="a" value1=abc ,key2="b" value2="bcd"


阅读 292

收藏
2020-05-30

共1个答案

小编典典

这在Spring MVC指南中有记录

当将@RequestParam注释声明为Map<String, String>MultiValueMap<String, String>参数时,将使用所有请求参数填充地图。

这意味着您当前得到的响应是预期的结果。在Map包含所有参数的列表,并在你的情况,你只有叫一个参数param

如果需要自定义参数映射,则必须自己实现。由于您也不使用JSON,因此您可能必须手动解析参数。

但是,如果您的目标是动态映射参数,则仍然可以使用Map<String, String>,但必须将请求更改为:

http://localhost:8080/test?a=abc&b=bcd
2020-05-30