HTTP POST请求继续发送一个空体

问题描述 投票:1回答:1

我发送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()几乎相同的代码,不知何故身体是空的。我控制台日志发出请求,以确保真正有数据之前。我也控制台登录的服务器上,身体是空的。到底会导致此?

angular typescript http
1个回答
1
投票

您可以使用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);
          });
      });
  }

您也可以通过数据在后的方法字符串文字,而不是像FORMDATA = FormData { "name":gameName,"image-pair-id":imagePairId,"pov": "Simple"}然后在return this.http.post<ICommonImagePair>(this.BASE_URL + "image-pair", JSON.stringify(formData));方法使用addGameCard

© www.soinside.com 2019 - 2024. All rights reserved.