You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 5 HttpClient:如何通过正则表达式过滤URL配置拦截器

实现建议:通过正则过滤URL来添加指定请求头

很简单,你只需要在拦截器里加入URL匹配逻辑,只有当请求URL符合你的正则规则时,才添加version请求头。这里我还帮你简化了正则表达式,让它更简洁易维护:

@Injectable()
export class MyInterceptor implements HttpInterceptor {
  // 简化后的正则:匹配以/api/或api/开头的monitoring或guiTrackers路径
  private readonly targetUrlRegex = /^\/?api\/(monitoring|guiTrackers)/;

  constructor() { }

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    // 检查当前请求URL是否匹配规则
    if (this.targetUrlRegex.test(req.url)) {
      // 匹配则克隆请求并添加header
      const tokenInHeader = req.clone({
        setHeaders: { 'version': '1LF' }
      });
      return next.handle(tokenInHeader);
    } else {
      // 不匹配则直接传递原请求
      return next.handle(req);
    }
  }
}

关键细节说明:

  • 正则简化:原来的^api/monitoring|^api/guiTrackers|^/api/monitoring|^/api/guiTrackers可以合并为^\/?api\/(monitoring|guiTrackers),其中\/?表示可选的斜杠,(monitoring|guiTrackers)表示二选一,这样既覆盖了所有原规则,又更简洁。
  • HttpRequest不可变性:Angular的HttpRequest是不可变对象,所以必须通过clone()方法来修改请求头,不能直接修改原对象。
  • URL匹配逻辑:使用正则的test()方法检查请求的req.url,如果返回true就添加header,否则直接放行原请求。

这样修改后,就只会给符合规则的请求添加version请求头,其他请求不受影响啦。

内容的提问来源于stack exchange,提问作者firasKoubaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:01:42