$httpAngularJS 的 $http 服務允許我們通過發送 HTTP 請求方式與后臺進行通信。在某些情況下,我們希望可以俘獲所有的請求,并且在將其發送到服務端之前進行操作。還有一些情況是,我們希望俘獲響應,并且在完成完成調用之前處理它。一個很好例子就是處理全局 http 異常。攔截器(Interceptors)應運而生。本文將介紹 AngularJS 的攔截器,并且給幾個有用的例子。
什么是攔截器?
$httpProvider 中有一個 interceptors 數組,而所謂攔截器只是一個簡單的注冊到了該數組中的常規服務工廠。下面的例子告訴你怎么創建一個攔截器:
<!-- lang: js -->module.factory('myInterceptor', ['$log', function($log) { $log.debug('$log is here to show you that this is a regular factory with injection'); var myInterceptor = { .... .... .... }; return myInterceptor;}]);然后通過它的名字添加到 $httpProvider.interceptors 數組:
<!-- lang: js -->module.config(['$httpProvider', function($httpProvider) { $httpProvider.interceptors.push('myInterceptor');}]);攔截器允許你:
angularJs提供四種攔截器,其中兩種成功攔截器(request、response),兩種失敗攔截器(requestError、responseError)。
angular.module("myApp", []) .factory('httpInterceptor', [ '$q', '$injector',function($q, $injector) { var httpInterceptor = { 'responseError' : function(response) { ...... return $q.reject(response); }, 'response' : function(response) { ...... return response; }, 'request' : function(config) { ...... return config; }, 'requestError' : function(config){ ...... return $q.reject(config); } } return httpInterceptor; }
|
新聞熱點
疑難解答
圖片精選