将 Typescript "Map" 作为 Angular4 HTTP POST 请求的一部分传递
Passing Typescript "Map" as a part of Angular4 HTTP POST request
我有一个 Angular 4 项目,我正在其中创建示例地图,如下所示:
let sampleMap = new Map<string, string>();
sampleMap.set('key1','value1');
现在我将此 Map 作为参数传递给 Angular 4 Post 方法,该方法连接到 Spring Boot Rest 后端,如下所示
Angular4码:
this.http.post('http://localhost:8080/data/posturl', sampleMap).map((response: Response) => {
return <string>response.text();
})
Spring Boot Rest 后端代码:
@RequestMapping("/posturl")
public String launch(@RequestBody Map<String, String> sampleMap) {
System.out.println("Received=" + sampleMap);
return "SUCCESS";
}
尽管当我尝试打印如上所示的 'sampleMap' 时,它会打印如下空白地图:
Received={}
我使用的是 Typescript 版本“~2.3.3”,我的 'tsconfig.json' 提到的目标是 'es5'。有人可以解释一下这种行为吗?
您必须将映射转换为键值对数组,因为无法在 http post 正文中直接使用 Typescript 映射。
您可以按如下方式转换地图:
const convMap = {};
sampleMap.forEach((val: string, key: string) => {
convMap[key] = val;
});
this.http.post('http://localhost:8080/data/posturl', convMap).map((response: Response) => {
return <string>response.text();
})
您可以创建一个以键作为属性的对象。包含 2 个项目的地图示例:
let myObject = {"key1":"value1","key2":"value2"};
this.http.post('http://localhost:8080/data/posturl', myObject ).map((response: Response) => {
return <string>response.text();
})
我有一个 Angular 4 项目,我正在其中创建示例地图,如下所示:
let sampleMap = new Map<string, string>();
sampleMap.set('key1','value1');
现在我将此 Map 作为参数传递给 Angular 4 Post 方法,该方法连接到 Spring Boot Rest 后端,如下所示
Angular4码:
this.http.post('http://localhost:8080/data/posturl', sampleMap).map((response: Response) => {
return <string>response.text();
})
Spring Boot Rest 后端代码:
@RequestMapping("/posturl")
public String launch(@RequestBody Map<String, String> sampleMap) {
System.out.println("Received=" + sampleMap);
return "SUCCESS";
}
尽管当我尝试打印如上所示的 'sampleMap' 时,它会打印如下空白地图:
Received={}
我使用的是 Typescript 版本“~2.3.3”,我的 'tsconfig.json' 提到的目标是 'es5'。有人可以解释一下这种行为吗?
您必须将映射转换为键值对数组,因为无法在 http post 正文中直接使用 Typescript 映射。
您可以按如下方式转换地图:
const convMap = {};
sampleMap.forEach((val: string, key: string) => {
convMap[key] = val;
});
this.http.post('http://localhost:8080/data/posturl', convMap).map((response: Response) => {
return <string>response.text();
})
您可以创建一个以键作为属性的对象。包含 2 个项目的地图示例:
let myObject = {"key1":"value1","key2":"value2"};
this.http.post('http://localhost:8080/data/posturl', myObject ).map((response: Response) => {
return <string>response.text();
})