繁体   English   中英

@RequestParam地图 <String, String> 在Spring Boot中将变量名称打印为键

[英]@RequestParam Map<String, String> Prints variable name as key in spring boot

当我尝试在春季启动时将Map作为RequestParam传递时,它将变量名打印为键,将完整值打印为字符串。 谁能帮忙为什么它表现得奇怪。 我的以下代码段

@PostMapping(value = "/", produces = MediaType.ALL_VALUE)
public String testController(@RequestParam Map<String, String> parms) throws Exception {
    parms.forEach((k, v) -> System.out.println((k + ":" + v)));
    return "";
}

当我传递价值时

{ “密押”: “测试值”}

产生的结果是parms:{“ testkey”:“ testvalue”}

也许要将HTTP请求正文转换为地图,则应在参数上使用@RequestBody而不是@RequestParam。 RequestBody批注会将http请求主体转换为Object,而RequestParam批注会将HTTP参数(URL参数或表单字段)解析为方法参数。

    @PostMapping(value = "/", produces = MediaType.ALL_VALUE)
    public String testController(@RequestBody Map<String, String> parms) throws Exception {
        parms.forEach((k, v) -> System.out.println((k + ":" + v)));
        return "";
    }

使用流动的* nix命令测试您的代码

curl --request POST \
  --url http://localhost:9090 \
  --header 'Cache-Control: no-cache' \
  --header 'Content-Type: application/json' \
  --data '{"testkey":"testkey"}'

它将发送以下http请求:

POST  HTTP/1.1
Host: localhost:9090
Content-Type: application/json
Cache-Control: no-cache

{"testkey":"testkey"}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM