gpt4 book ai didi

angular - HTTP post 请求不断发送空主体

转载 作者:可可西里 更新时间:2023-11-01 17:17:39 24 4
gpt4 key购买 nike

我正在向我的服务器发送一个 post 请求,从服务器端,我只得到一个空体。

我的客户是 Angular 。

这是发送请求的服务的代码:

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运算符而不是像下面那样手动订阅嵌套的可观察对象 -

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方法。

关于angular - HTTP post 请求不断发送空主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54500544/

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