angular http interceptors 攔截器使用分享

攔截器

在開始建立攔截器以前,必定要了解 $q和延期承諾apiapi

出於全局錯誤處理,身份驗證或請求的任何同步或異步預處理或響應的後處理目的,但願可以在將請求移交給服務器以前攔截請求,並在將請求移交給服務器以前將響應攔截髮起這些請求的應用程序代碼-攔截器利用promise api知足同步和異步預處理的需求。數組

攔截器是$httpProvider經過將它們添加到$httpProvider.interceptors數組而向其註冊的服務工廠調用工廠並注入依賴項(若是指定),並返回攔截器。promise

有兩種攔截器(和兩種拒絕攔截器):服務器

  • request:攔截器經過http config對象調用。該函數能夠自由修改config對象或建立新對象。函數須要config直接返回對象,或者包含config或新config對象的Promise。
  • requestError:當先前的攔截器拋出錯誤或被拒絕解決時,攔截器將被調用。
  • response:攔截器經過http response對象調用。該函數能夠自由修改response對象或建立新對象。函數須要response直接返回對象,或者做爲包含response或新response對象的承諾
  • responseError:當先前的攔截器拋出錯誤或被拒絕解決時,攔截器將被調用。
 1 // register the interceptor as a service
 2 $provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
 3   return {
 4     // optional method
 5     'request': function(config) {
 6       // do something on success
 7       return config;
 8     },
 9 
10     // optional method
11    'requestError': function(rejection) {
12       // do something on error
13       if (canRecover(rejection)) {
14         return responseOrNewPromise
15       }
16       return $q.reject(rejection);
17     },
18 
19 
20 
21     // optional method
22     'response': function(response) {
23       // do something on success
24       return response;
25     },
26 
27     // optional method
28    'responseError': function(rejection) {
29       // do something on error
30       if (canRecover(rejection)) {
31         return responseOrNewPromise
32       }
33       return $q.reject(rejection);
34     }
35   };
36 });
37 
38 $httpProvider.interceptors.push('myHttpInterceptor');
39 
40 
41 // alternatively, register the interceptor via an anonymous factory
42 $httpProvider.interceptors.push(function($q, dependency1, dependency2) {
43   return {
44    'request': function(config) {
45        // same as above
46     },
47 
48     'response': function(response) {
49        // same as above
50     }
51   };
52 });

此處有一個坑,在push時,提示未定義攔截器,由於$httpProvider在config 攔截器時,攔截器service 還不能找到,異步

能夠將攔截器service 定義在config依賴的模塊中使用。ide

相關文章
相關標籤/搜索