Angular 2 - 在成功和错误情况下调用的Http请求方法

时间:2016-11-23 16:34:06

标签: angular 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))
    .catch((error:any) => this.storageService.setAuthInfo(res.headers));

现在我必须在map和catch方法中设置新标记。是否有一个方法可以在成功和错误情况下调用,我可以设置新的令牌信息(this.storageService.setAuthInfo(res.headers))?

1 个答案:

答案 0 :(得分:0)

你可以使用.finally而不是observable,但是使用finally函数你不会控制response的东西。因此可以更好地使用map函数来观察&从那里获取headers信息到某个变量。然后从finally this.storageService.setAuthInfo方法调用中传递。

<强>代码

myRequest(){
    let header;
    this.http.request(new Request(requestOptions))
        .map((res:Response) => { 
           //take headers to pass it when request succeed/fails
           header = res.headers;
           return res.json();
        )
        .finally(() => this.storageService.setAuthInfo(headers))
}