天天看點

使用自定義 HTTP Interceptor 記錄 SAP Spartacus 發送的 OCC API 以及響應

最後的效果:

使用自定義 HTTP Interceptor 記錄 SAP Spartacus 發送的 OCC API 以及響應

請求的方法類型和 url 都被記錄了下來,同響應一起。

使用自定義 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 以及響應

繼續閱讀