我在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'
})
}
答案 0 :(得分:2)
您需要告诉Angular您想要使用选项observe: 'response'
来获得complete response,这将使您可以访问标题和状态代码:
this.http.post<Account>(url, { observe: 'response' }).pipe(
map(response => response.headers['status'])
)
响应的类型为HttpResponse<Account>
。