分享Angular http interceptors 攔截器使用(推薦)
AngularJS 簡(jiǎn)介
AngularJS 是一個(gè) JavaScript 框架。它可通過 <script> 標(biāo)簽添加到 HTML 頁(yè)面。
AngularJS 通過 指令 擴(kuò)展了 HTML,且通過 表達(dá)式 綁定數(shù)據(jù)到 HTML。
攔截器
在開始創(chuàng)建攔截器之前,一定要了解 $q和延期承諾api
出于全局錯(cuò)誤處理,身份驗(yàn)證或請(qǐng)求的任何同步或異步預(yù)處理或響應(yīng)的后處理目的,希望能夠在將請(qǐng)求移交給服務(wù)器之前攔截請(qǐng)求,并在將請(qǐng)求移交給服務(wù)器之前將響應(yīng)攔截發(fā)起這些請(qǐng)求的應(yīng)用程序代碼-攔截器利用promise api滿足同步和異步預(yù)處理的需求。
攔截器是$httpProvider通過將它們添加到$httpProvider.interceptors數(shù)組而向其注冊(cè)的服務(wù)工廠。調(diào)用工廠并注入依賴項(xiàng)(如果指定),并返回?cái)r截器。
有兩種攔截器(和兩種拒絕攔截器):
- request:攔截器通過http config對(duì)象調(diào)用。該函數(shù)可以自由修改config對(duì)象或創(chuàng)建新對(duì)象。函數(shù)需要config直接返回對(duì)象,或者包含config或新config對(duì)象的Promise。
- requestError:當(dāng)先前的攔截器拋出錯(cuò)誤或被拒絕解決時(shí),攔截器將被調(diào)用。
- response:攔截器通過http response對(duì)象調(diào)用。該函數(shù)可以自由修改response對(duì)象或創(chuàng)建新對(duì)象。函數(shù)需要response直接返回對(duì)象,或者作為包含response或新response對(duì)象的承諾。
- responseError:當(dāng)先前的攔截器拋出錯(cuò)誤或被拒絕解決時(shí),攔截器將被調(diào)用。
// register the interceptor as a service $provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) { return { // optional method 'request': function(config) { // do something on success return config; }, // optional method 'requestError': function(rejection) { // do something on error if (canRecover(rejection)) { return responseOrNewPromise } return $q.reject(rejection); }, // optional method 'response': function(response) { // do something on success return response; }, // optional method 'responseError': function(rejection) { // do something on error if (canRecover(rejection)) { return responseOrNewPromise } return $q.reject(rejection); } }; }); $httpProvider.interceptors.push('myHttpInterceptor'); // alternatively, register the interceptor via an anonymous factory $httpProvider.interceptors.push(function($q, dependency1, dependency2) { return { 'request': function(config) { // same as above }, 'response': function(response) { // same as above } }; });
此處有一個(gè)坑,在push時(shí),提示未定義攔截器,因?yàn)?httpProvider在config 攔截器時(shí),攔截器service 還不能找到,
可以將攔截器service 定義在config依賴的模塊中使用。
以上內(nèi)容是小編給大家分享Angular http interceptors 攔截器使用,希望對(duì)大家有所幫助!
相關(guān)文章
使用Raygun來自動(dòng)追蹤AngularJS中的異常
這篇文章主要介紹了使用Raygun來自動(dòng)追蹤AngularJS中的異常,AngularJS是一款高人氣的JavaScript庫(kù),需要的朋友可以參考下2015-06-06AngularJS基礎(chǔ) ng-mouseenter 指令示例代碼
本文主要介紹AngularJS ng-mouseenter 指令,這里對(duì)ng-mouseenter 指令基礎(chǔ)資料做了詳細(xì)整理,并附代碼實(shí)例,有需要的小伙伴可以參考下2016-08-08AngularJS實(shí)現(xiàn)自定義指令及指令配置項(xiàng)的方法
這篇文章主要介紹了AngularJS實(shí)現(xiàn)自定義指令及指令配置項(xiàng)的方法,結(jié)合實(shí)例形式簡(jiǎn)單總結(jié)分析了AngularJS自定義指令及指令配置項(xiàng)的實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-11-11詳解Angular2表單-模板驅(qū)動(dòng)的表單(Template-Driven Forms)
本篇文章主要介紹了詳解Angular2表單-模板驅(qū)動(dòng)的表單(Template-Driven Forms),具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08Angular2 Service實(shí)現(xiàn)簡(jiǎn)單音樂播放器服務(wù)
本篇文章主要介紹了Angular2 Service實(shí)現(xiàn)簡(jiǎn)單音樂播放器服務(wù) ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02Angular.js中$apply()和$digest()的深入理解
相信大家都知道$digest()和$apply()是AngularJS中的兩個(gè)核心并且有時(shí)候容易引人誤解的部分。我們需要深入理解這兩者是如何運(yùn)作的,從而才能理解AngularJS本身是如何運(yùn)作的。本文的目的就是介紹$digest()和$apply()是如何確確實(shí)實(shí)的對(duì)你有用的。下面來一起看看吧。2016-10-10關(guān)于angular js_$watch監(jiān)控屬性和對(duì)象詳解
下面小編就為大家?guī)硪黄P(guān)于angular js_$watch監(jiān)控屬性和對(duì)象詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04Angularjs通過指令監(jiān)聽ng-repeat渲染完成后執(zhí)行腳本的方法
指令是angular的核心功能之一,用好了事半功倍,監(jiān)聽ng-repeat執(zhí)行狀態(tài)僅僅是它功能的冰山一角吧。下面這篇文章主要介紹了Angularjs通過指令監(jiān)聽ng-repeat渲染完成后執(zhí)行腳本的方法,需要的朋友可以參考下。2016-12-12AngularJS輔助庫(kù)browserTrigger用法示例
這篇文章主要介紹了AngularJS輔助庫(kù)browserTrigger用法,結(jié)合實(shí)例形式分析了輔助庫(kù)browserTrigger的功能及單元測(cè)試中的使用技巧,需要的朋友可以參考下2016-11-11