gpt4 book ai didi

java - @RequestParam Map 在 Spring Boot 中打印变量名称作为键

转载 作者:行者123 更新时间:2023-12-02 11:51:41 24 4
gpt4 key购买 nike

当我尝试在 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 "";
}

当我传递值时

{"testkey":"testvalue"}

它产生的输出是 parms : {"testkey":"testvalue"}

最佳答案

也许您想将http请求Body转换为 map ,您应该在参数上使用@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"}

关于java - @RequestParam Map<String, String> 在 Spring Boot 中打印变量名称作为键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47842363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com