Angular 2 - 从Http请求中获取标头

时间:2016-11-23 14:14:35

标签: angular angular2-services angular2-http

我的所有后端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

你有什么建议我?

1 个答案:

答案 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'));

类似answer here