在Angular HttpInterceptor中添加是否向req.clone添加headers的逻辑

Adding logic whether to add headers or not to req.clone in an Angular HttpInterceptor

我想在我的 HttpInterceptor 中的以下逻辑中添加一个 if 语句:

const authToken = this.auth.getAuthorizationToken();

const authReq = req.clone({
     headers: req.headers.set('Authorization', `Bearer ${authToken}`)
});

我想在使用 authToken 更新 headers 之前检查 authToken 是否存在。我很确定这要么是语法问题,要么有另一种方法可以在代码块或其他东西中设置 req.clone() 的 headers 属性。

这是我的最佳作品,但我觉得还有更好的方法:

let authReq: HttpRequest<any> = req;

if (authToken) {
  authReq = req.clone({
    headers: req.headers.set('Authorization', `Bearer ${authToken}`)
  });
}

你走在正确的轨道上。如果令牌存在,则需要修改请求;如果没有令牌,则保持不变。示例:

intercept(
  req: HttpRequest<any>,
  next: HttpHandler,
): Observable<HttpEvent<any>> {
  const authToken = this.auth.getAuthorizationToken();

  if (authToken) {
    req = req.clone({
      headers: req.headers.set('Authorization', `Bearer ${authToken}`)
    });
  }

  return next.handle(req);
}