【问题标题】:Is it possible to use one interceptor in Angular to modify HTTP requests and responses?是否可以在 Angular 中使用一个拦截器来修改 HTTP 请求和响应?
【发布时间】:2022-11-15 18:42:19
【问题描述】:

我通过一个在线课程学习了 Angular,在该课程中,讲师似乎使用了一个拦截器来修改传出请求的标头,并捕获响应数据(或者,这就是我认为正在发生的事情。)下面是截取的屏幕截图course - 请忽略 cmets,这些仅供我个人参考。

enter image description here

这样的事情可能吗?或者,是否需要单独的拦截器来修改传出请求和操纵传入响应?

我在网上进行了研究,但找不到将拦截器用于这两个目的的实例。

【问题讨论】:

    标签: angular typescript interceptor


    【解决方案1】:

    您可以在单个拦截器中组合传出和传入请求的处理(完全如图所示)。传入的响应可以在 next.handle(modifiedRequest) 上定义的 pipe 中处理。

    有多个可用的 rxjs 运算符可以传递给管道(取决于您的需要)。要实际操作传入响应,您只需将 map 运算符 (https://www.learnrxjs.io/learn-rxjs/operators/transformation/map) 传递给管道即可。在您的情况下,tap (https://www.learnrxjs.io/learn-rxjs/operators/utility/do) 用于执行副作用(如记录响应)。

    问题是你是否应该使用单个拦截器来执行这两个任务。如果请求和响应操作相互关联,那么我的回答可能是肯定的。如果它们处理完全不同的用例,我建议您将它们拆分为单独的拦截器,以便更好地构建您的代码。

    【讨论】:

      猜你喜欢
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 2014-08-16
      相关资源
      最近更新 更多