我的所有后端API请求都会在标头中返回新的令牌信息,即使它们会抛出异常。在下一个请求中,我需要发送这些新的令牌信息。
所以我试图找出一种独特而标准的方式来做到这一点,所以我一直在尝试:
let requestOptions = new RequestOptions(Object.assign({
method: method,
url: environment.apiHost + url,
body: body,
headers: authenticatedRequest ? this.requestService.getAuthHeaders() : this.requestService.getJsonHeaders(),
withCredentials: authenticatedRequest
}));
this.http.request(new Request(requestOptions))
.map((res:Response) => { this.storageService.setAuthInfo(res.headers); res.json() } )
.catch((error:any) => Observable.throw(error.json().error || 'Server error'));
我面临的问题是,当我subscribe
使用此方法时,res
变量将返回undefined
。
你有什么建议我?
答案 0 :(得分:3)
问题是您必须使用res.json()
明确地从map
函数返回回复{}
。
this.http.request(new Request(requestOptions))
.map((res:Response) => {
this.storageService.setAuthInfo(res.headers);
return res.json();
} )
.catch((error:any) => Observable.throw(error.json().error || 'Server error'));