angular - HTTP post 请求不断发送空正文
问题描述
我正在向我的服务器发送一个发布请求,从服务器端,我只得到一个空的正文。
我的客户是有角的。
这是发送请求的服务的代码:
public constructor(private http: HttpClient) { }
public addImagePair(gameName: string, originalImage: File, modifiedImage: File): Observable<ICommonImagePair> {
const formData: FormData = new FormData();
formData.append("name", gameName);
formData.append("originalImage", originalImage);
formData.append("modifiedImage", modifiedImage);
new Response(formData).text().then(console.log);
return this.http.post<ICommonImagePair>(this.BASE_URL + "image-pair", formData);
}
public addGameCard(gameName: string, imagePairId: string, pov: POVType): Observable<ICommonGameCard> {
const formData: FormData = new FormData();
formData.append("name", gameName);
formData.append("image-pair-id", imagePairId);
formData.append("pov", "Simple");
new Response(formData).text().then(console.log);
return this.http.post<ICommonGameCard>(this.BASE_URL + "gamecard", formData);
}
以下是调用该服务的组件的代码:
public addImagePair(): void {
this.simplePOVGameGeneratorService.addImagePair(this.gameName, this.originalImageFile, this.modifiedImageFile)
.subscribe((imagePair: ICommonImagePair) => {
this.simplePOVGameGeneratorService.addGameCard(imagePair.name, imagePair.id, POVType.Simple)
.subscribe((gameCard: ICommonGameCard) => {
console.log(gameCard);
});
});
}
在我的组件中,我首先发出一个请求addImagePair()
,它确实发送了一个没有任何问题的请求。然后,我addGameCard()
用几乎相同的代码调用,不知何故身体是空的。我在发出请求之前控制台日志以确保确实有数据。我还在服务器上控制台登录,正文为空。这到底是什么原因造成的?
解决方案
您可以使用flatMap
运算符而不是手动订阅嵌套的 observables,如下所示 -
public addImagePair(): void {
this.simplePOVGameGeneratorService.addImagePair(this.gameName, this.originalImageFile, this.modifiedImageFile)
.flatMap((imagePair: ICommonImagePair) => this.simplePOVGameGeneratorService.addGameCard(imagePair.name, imagePair.id, POVType.Simple))
.subscribe((gameCard: ICommonGameCard) => {
console.log(gameCard);
});
});
}
您还可以将 post 方法中的数据作为字符串文字而不是FormData
像 formdata = 那样传递{ "name":gameName,"image-pair-id":imagePairId,"pov": "Simple"}
,然后return this.http.post<ICommonImagePair>(this.BASE_URL + "image-pair", JSON.stringify(formData));
在addGameCard
方法中使用。
推荐阅读
- sql - postgres中的多表插入
- node.js - 有没有办法让 Mongo Db 中的整数自动增量字段作为不同于标准 ID 的文档/表格的一部分?
- yaml - Kubernetes ConfigMap 自动将 Literal 更改为 Folded Block Scalar
- c# - 如何在嵌入独木舟的 ac#.net testproject 中使用其他库
- java - Java多态序列
- python - 在 Pandas Python 中创建依赖于另一个数据框的新数据框时出现问题
- amazon-web-services - 从我的本地计算机访问我在 Amazon Web Services 中的数据库涉及哪些事情?
- c++ - C++ - 有没有办法只用lua库解析lua而不执行它?
- jquery - 读取和更新行按钮上的 Gridview 中的文本框值单击使用 Jquery
- android - UrlFormEncoded post 请求中的字段被编码两次