可能重复的澄清:问题旨在询问如何观察完整的反应并返回身体;不是"如何读取标题"
我正在学习Angular,并经历了《英雄之旅》教程。
我想修改以下代码以获取完整响应,以便我可以从标题中获得链接,然后仍然返回英雄[]。
/** GET heroes from the server */
getHeroes (): Observable<Hero[]> {
return this.http.get<Hero[]>(this.heroesUrl)
.pipe(
tap(heroes => this.log(`fetched heroes`)),
catchError(this.handleError('getHeroes', []))
);
}
https://angular.io/tutorial/toh-pt6#tap-into-the-observable
好吧,如果我正确理解您,您要通过其他参数{ observe: "response" }
,那么您可以通过res.headers
访问标题,而响应主体则可以通过res.body
。
return this.http.get<Hero[]>(this.heroesUrl { observe: "response" })
.pipe(
tap(res => this.log(`fetched extended response`)),
catchError(this.handleError('getHeroes', []))
);
}
基于 @jonrsharpe的反馈,我正在寻找的代码是:
getHeroes (): Observable<Hero[]> {
return this.http.get<Hero[]>(url,{observe: "response"})
.pipe(
tap(res => this.log("headers:" + JSON.stringify(res.headers)) ),
map(res => res.body),
catchError(this.handleError('getHeroes', []))
);
}
我需要此"地图(res => res.body)",以观察响应并仍然返回身体。
getHeros(): Observable<Hero[]> {
if (this.heros) {
return of(this.heros);
}
return this.http
.get<Heros[]>(this.herosPath)
.pipe(
tap(data => console.log(JSON.stringify(data))),
tap(data => (this.patients = data),
catchError(this.handleError))
);
}