使用自定义|使用自定义 HTTP Interceptor 记录 SAP Spartacus 发送的 OCC API 以及响应

最后的效果:
使用自定义|使用自定义 HTTP Interceptor 记录 SAP Spartacus 发送的 OCC API 以及响应
文章图片

请求的方法类型和 url 都被记录了下来,同响应一起。
【使用自定义|使用自定义 HTTP Interceptor 记录 SAP Spartacus 发送的 OCC API 以及响应】使用自定义|使用自定义 HTTP Interceptor 记录 SAP Spartacus 发送的 OCC API 以及响应
文章图片

设置断点来观察自定义 HTTP interceptor 运行时原理:
使用自定义|使用自定义 HTTP Interceptor 记录 SAP Spartacus 发送的 OCC API 以及响应
文章图片

我们自定义的 intercept 也是通过依赖注入的方式被注入到 httpInterceptor 的调度器里。
使用自定义|使用自定义 HTTP Interceptor 记录 SAP Spartacus 发送的 OCC API 以及响应
文章图片

首先把 method 和 urlWithParams 从 request 里提取出来:
使用自定义|使用自定义 HTTP Interceptor 记录 SAP Spartacus 发送的 OCC API 以及响应
文章图片

返回的 Observable pipe 方法里的 switchMap 里的处理函数,什么时候会被触发?
使用自定义|使用自定义 HTTP Interceptor 记录 SAP Spartacus 发送的 OCC API 以及响应
文章图片

在响应式编程的世界里,不要太在意 switchMap 里指定的函数体是何时被调用的——充斥的全是 rxjs 的回调。
使用自定义|使用自定义 HTTP Interceptor 记录 SAP Spartacus 发送的 OCC API 以及响应
文章图片

只需要注意 switchMap 里必须返回一个 Observable wrapper 对象。
再看这个 custom interceptor 什么时候被实例化的?
使用自定义|使用自定义 HTTP Interceptor 记录 SAP Spartacus 发送的 OCC API 以及响应
文章图片

首先把系统所有的 HTTP_INTERCEPTORS 注入的实现都取出来,放到数组里,然后使用数组的 reduceRight 方法,逐一调用之。
我们自定义的 Custom HTTP Interceptor 赫然在数组里,所以可以被调用到:
使用自定义|使用自定义 HTTP Interceptor 记录 SAP Spartacus 发送的 OCC API 以及响应
文章图片

更多Jerry的原创文章,尽在:"汪子熙":
使用自定义|使用自定义 HTTP Interceptor 记录 SAP Spartacus 发送的 OCC API 以及响应
文章图片

    推荐阅读