SAP Spartacus HTTP请求的错误处理机制
HttpInterceptor來自Angular標準庫,而構造函數里注入的handlers,類型為HttpErrorHandler,后者是Spartacus自己實現的。
HttpErrorHandler是一個abstract class:
responseStatus:每個HttpErrorHandler的子類,負責處理一種HTTP的錯誤狀態。
HttpErrorInterceptor的handleErrorResponse:
根據response的狀態找到對應的handler,再調用handler的handleError方法進行對應的錯誤處理。
getResponseHandler是Spartacus自己實現的方法,通過HttpErrorHandler的responseStatus字段進行匹配:
下面觀察一下運行時實現:單元測試里首先測試HttpErrorInterceptor對UnknownErrorHandler的調用:
flush一個Unknown response給請求方:
這里我想測試,UnknownErrorHandler的handleError方法通過HttpErrorInterceptor被調用了:
flush之后,進入了HttpErrorInterceptor的catchError回調:
注意這個handlers的類型,是一個數組:
數組一共8個元素:
TypeScript里的abstract class可以被實例化?
UnknownErrorHandler的hasMatch返回true,因此成為getResponseHandler返回的元素之一:
BadGatewayHandler不match:
UnknownErrorHandler如愿被調用了:
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的SAP Spartacus HTTP请求的错误处理机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苏宁金融存钱苏宁倒闭怎么办 如果苏宁倒闭
- 下一篇: Angular jasmine单元测试框