我的所有后端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)
)?
答案 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))
}