gpt4 book ai didi

java - 如何在请求正文中将 map 从 Angular 客户端正确发送到 Spring Boot Controller ?收到的 map 总是空的

转载 作者:行者123 更新时间:2023-12-03 21:19:27 25 4
gpt4 key购买 nike

Angular 客户端 - httpClient 发送请求

const map: Map<string, string> = new Map<string, string>();
map.set('foo', 'bar');
this.http.post(address, map, httpOptions).subscribe(
next => console.log('next: ' + next),
error => console.log('error: ' + error),
() => console.log('complete')
);

Springboot 服务器 - Controller 接收请求
@RequestMapping(value = "/foobar", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public void fooBar(@RequestBody Map<String, String> foo){
System.out.println(foo.entrySet()); //<-- always empty
}

最佳答案

您必须将 Map 转换为键值对数组,事实证明,Typescript 映射不能直接在 http 帖子正文中使用。

您可以按如下方式转换 map :

const convMap = {};
map.forEach((val: string, key: string) => {
convMap[key] = val;
});
this.http.post(apiBaseUrl + '/foobar', convMap, httpOptions).subscribe(
next => console.log('next: ' + next),
error => console.log('error: ' + error),
() => console.log('complete')
);

在后端,您的 System.out.println(foo.entrySet());将输出以下内容:[foo=bar]

关于java - 如何在请求正文中将 map 从 Angular 客户端正确发送到 Spring Boot Controller ?收到的 map 总是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56020482/

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