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

相关文章
相关标签/搜索