如何获取Angular 7中的响应代码

时间:2019-05-08 17:25:34

标签: angular typescript angular7

我在angular 7应用中有以下代码

insertAccount(submittedAccount:Account):Observable<Account>{
    return this.http.post<Account>(this.baseApiUrl+"Account",submittedAccount,this.httpNormalOptions).pipe(
      map(response=>{
        return response;
      }
    ))
   }

如何获取http响应代码?例如,如果它返回401错误,则需要处理它,而当前它显然只是返回对象。

----更新----

好的,所以我按照下面的解决方案进行操作,但是由于没有这样的响应,因此从来没有达到map方法(我想是因为它由于401而失败)

所以我将其更改为以下

let result:Account[]=[];
    this.http.get<HttpResponse<Account[]>>(this.baseApiUrl+"Account",this.httpNormalOptions).pipe(map(
      response=>{
       return response;
      }
    )).subscribe(r=>{result= r.body},p=>{if(p.status===401){this.clearToken()}})

    return result;

但是现在显然不能返回可观察到的...这是一个问题吗? (我对Observable相当陌生)与仅返回Account []对象相比,返回Observable有好处吗?

为了完整起见,我正在构建随响应发送的标头,如下所示

this.httpNormalOptions = {
        headers: new HttpHeaders({
          'Content-Type': 'application/json',
          'Authorization': 'Bearer ' + this.auth_token,
          observe:'response'
        })
      }

1 个答案:

答案 0 :(得分:2)

您需要告诉Angular您想要使用选项observe: 'response'来获得complete response,这将使您可以访问标题和状态代码:

this.http.post<Account>(url, { observe: 'response' }).pipe(
    map(response => response.headers['status'])
)

响应的类型为HttpResponse<Account>