http.post返回未定义的res.headers

时间:2019-08-04 10:47:52

标签: angular rxjs httpclient asp-net-core-spa-services

在我的Web API(asp核心)中 当我发布对象以保存在数据库中时,它返回CreatAtRoute wich是对象的URL或位置 像:http://localhost:api/photo/45

它只是返回“ res.headers undefined”

我正在使用此代码 获取最近保存在数据库中的对象的URL

 addBankCard(bankCard: BankCard, id: string): Observable<BankCard> {
    return this.http.post(this.baseUrl + 'users/' + id + '/bankcards', bankCard)
      .pipe(
        flatMap((res) => {
          const loc = (res as Response).headers.get('Location');
          return this.http.get<BankCard>(loc);
        })
      );
  }

,它只返回“ res.headers未定义”

API完美运行 并且我在Aspnetcore webapi的启动类中使用AllowAnyHeaders

我该怎么办?

1 个答案:

答案 0 :(得分:0)

默认情况下,角httpclient返回响应主体。如果您可以访问整个响应,则需要更改observe类型的函数params:

addBankCard(bankCard: BankCard, id: string): Observable<BankCard> {
    return this.http.post(this.baseUrl + 'users/' + id + '/bankcards', bankCard,  {observe: 'response'})
      .pipe(
        flatMap((res) => {
          const loc = res.headers.get('Location');
          return this.http.get<BankCard>(loc);
        })
      );
  }