最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

快速學(xué)習(xí)AngularJs HTTP響應(yīng)攔截器

 更新時(shí)間:2015年12月31日 15:43:12   作者:賴祥燃  
任何時(shí)候,如果我們想要為請(qǐng)求添加全局功能,例如身份認(rèn)證、錯(cuò)誤處理等,在請(qǐng)求發(fā)送給服務(wù)器之前或服務(wù)器返回時(shí)對(duì)其進(jìn)行攔截,是比較好的實(shí)現(xiàn)手段

任何時(shí)候,如果我們想要為請(qǐng)求添加全局功能,例如身份認(rèn)證、錯(cuò)誤處理等,在請(qǐng)求發(fā)送給服務(wù)器之前或服務(wù)器返回時(shí)對(duì)其進(jìn)行攔截,是比較好的實(shí)現(xiàn)手段。

angularJs通過(guò)攔截器提供了一個(gè)從全局層面進(jìn)行處理的途徑。

四種攔截器

實(shí)現(xiàn) request 方法攔截請(qǐng)求

request: function(config) {
// do something on request success
return config || $q.when(config);
} 

該方法會(huì)在 $http 發(fā)送請(qǐng)求后臺(tái)之前執(zhí)行,因此你可以修改配置或做其他的操作。該方法接收請(qǐng)求配置對(duì)象(request configuration object)作為參數(shù),然后必須返回配置對(duì)象或者 promise 。如果返回?zé)o效的配置對(duì)象或者 promise 則會(huì)被拒絕,導(dǎo)致 $http 調(diào)用失敗。

實(shí)現(xiàn) requestError 方法攔截請(qǐng)求異常

requestError: function(rejection) {
  // do something on request error  return $q.reject(rejection);
} 

有時(shí)候一個(gè)請(qǐng)求發(fā)送失敗或者被攔截器拒絕了,請(qǐng)求異常攔截器會(huì)俘獲那些被上一個(gè)請(qǐng)求攔截器中斷的請(qǐng)求。它可以用來(lái)恢復(fù)請(qǐng)求或者有時(shí)可以用來(lái)撤銷請(qǐng)求之前所做的配置,比如說(shuō)關(guān)閉進(jìn)度條,激活按鈕和輸入框什么之類的。

實(shí)現(xiàn) response 方法攔截響應(yīng)

response: function(response) {
  // do something on response success
return response || $q.when(response);} 

該方法會(huì)在 $http 接收到從后臺(tái)過(guò)來(lái)的響應(yīng)之后執(zhí)行,因此你可以修改響應(yīng)或做其他操作。該方法接收響應(yīng)對(duì)象(response object)作為參數(shù),然后必須返回響應(yīng)對(duì)象或者 promise。響應(yīng)對(duì)象包括了請(qǐng)求配置(request configuration),頭(headers),狀態(tài)(status)和從后臺(tái)過(guò)來(lái)的數(shù)據(jù)(data)。如果返回?zé)o效的響應(yīng)對(duì)象或者 promise 會(huì)被拒絕,導(dǎo)致$http 調(diào)用失敗。

實(shí)現(xiàn) responseError 方法攔截響應(yīng)異常

responseError: function(rejection) {
// do something on response error  return $q.reject(rejection);
} 

有時(shí)候我們后臺(tái)調(diào)用失敗了,也有可能它被一個(gè)請(qǐng)求攔截器拒絕了或者被上一個(gè)響應(yīng)攔截器中斷了。在這種情況下,響應(yīng)異常攔截器可以幫助我們恢復(fù)后臺(tái)調(diào)用。

攔截器核心

攔截服務(wù)工廠

var app = angular.module("ajaxHttp", []);
app.factory("httpInterceptor", [ "$q", "$rootScope", function($q, $rootScope) {
return {
request: function(config) {
// do something on request success
return config || $q.when(config);
},
   requestError: function(rejection) {
     // do something on request error
     return $q.reject(rejection)
   },
response: function(response) {
// do something on response success
return response || $q.when(response);
},
responseError : function(rejection) {
// do something on response error
return $q.reject(rejection);
}
};
}]); 

注冊(cè)攔截工廠方法

app.config(["$httpProvider", function($httpProvider) {
  $httpProvider.interceptors.push("httpInterceptor");
}]); 

示例

對(duì)401,404的攔截處理

app.config(["$httpProvider", function($httpProvider) { 
$httpProvider.interceptors.push('httpInterceptor'); 
}]); 
app.factory("httpInterceptor", ["$q", "$injector", function($q, $injector) {
return {
"responseError": function(response) {
if (response.status == 401) {
var rootScope = $injector.get('$rootScope');
var state = $injector.get('$rootScope').$state.current.name;
rootScope.stateBeforLogin = state;
rootScope.$state.go("login");
return $q.reject(response);
}
else if (response.status === 404) {
console.log("404!");
return $q.reject(response);
}
}
};
]);

以上內(nèi)容給大家分享快速學(xué)習(xí)AngularJs HTTP響應(yīng)攔截器 的相關(guān)知識(shí),希望大家喜歡,同時(shí)感謝大家一直以來(lái)對(duì)腳本之家網(wǎng)站的支持。

相關(guān)文章

  • Angular4學(xué)習(xí)教程之HTML屬性綁定的方法

    Angular4學(xué)習(xí)教程之HTML屬性綁定的方法

    這篇文章主要給大家介紹了關(guān)于Angular4學(xué)習(xí)教程之HTML屬性綁定的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • Angular使用Md5加密的解決方法

    Angular使用Md5加密的解決方法

    這篇文章主要介紹了Angular使用Md5加密的解決方法,需要的朋友可以參考下
    2017-09-09
  • 詳解Angular數(shù)據(jù)綁定及其實(shí)現(xiàn)方式

    詳解Angular數(shù)據(jù)綁定及其實(shí)現(xiàn)方式

    數(shù)據(jù)綁定是將應(yīng)用程序UI或用戶界面綁定到模型的機(jī)制。使用數(shù)據(jù)綁定,用戶將能夠使用瀏覽器來(lái)操縱網(wǎng)站上存在的元素。
    2021-05-05
  • Angular 4 指令快速入門教程

    Angular 4 指令快速入門教程

    本篇文章主要介紹了Angular 4 指令快速入門教程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Angularjs通過(guò)指令監(jiān)聽(tīng)ng-repeat渲染完成后執(zhí)行腳本的方法

    Angularjs通過(guò)指令監(jiān)聽(tīng)ng-repeat渲染完成后執(zhí)行腳本的方法

    指令是angular的核心功能之一,用好了事半功倍,監(jiān)聽(tīng)ng-repeat執(zhí)行狀態(tài)僅僅是它功能的冰山一角吧。下面這篇文章主要介紹了Angularjs通過(guò)指令監(jiān)聽(tīng)ng-repeat渲染完成后執(zhí)行腳本的方法,需要的朋友可以參考下。
    2016-12-12
  • AngularJS基礎(chǔ) ng-href 指令用法

    AngularJS基礎(chǔ) ng-href 指令用法

    本文主要介紹AngularJS ng-href 指令,這里對(duì)ng-href 基礎(chǔ)資料進(jìn)行詳細(xì)介紹,并附代碼實(shí)例,有興趣的小伙伴可以參考下
    2016-08-08
  • Angular 5.x 學(xué)習(xí)筆記之Router(路由)應(yīng)用

    Angular 5.x 學(xué)習(xí)筆記之Router(路由)應(yīng)用

    本篇文章主要介紹了Angular 5.x 學(xué)習(xí)筆記之Router(路由)應(yīng)用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Angularjs中controller的三種寫法分享

    Angularjs中controller的三種寫法分享

    這篇文章給大家介紹了angularjs中controller的三種寫法,每種寫法都給出了示例代碼,對(duì)大家理解和學(xué)習(xí)很有幫助,有需要的朋友們可以參考借鑒。
    2016-09-09
  • Angular2中select用法之設(shè)置默認(rèn)值與事件詳解

    Angular2中select用法之設(shè)置默認(rèn)值與事件詳解

    在Angular.JS中可以使用數(shù)組或?qū)ο髣?chuàng)建一個(gè)下拉列表選項(xiàng)。關(guān)于Angular.js中select的基礎(chǔ)相信大家應(yīng)該都已經(jīng)了解了,那么下面這篇文章主要給大家介紹了Angular2中select用法之設(shè)置默認(rèn)值與事件的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-05-05
  • AngularJS基礎(chǔ)知識(shí)

    AngularJS基礎(chǔ)知識(shí)

    這篇文章主要介紹了AngularJS基礎(chǔ)知識(shí),包括AngularJS定義和特點(diǎn)以及構(gòu)建AngularJS應(yīng)用的方法,推薦給大家。
    2014-12-12

最新評(píng)論

积石山| 黄浦区| 天全县| 博野县| 嘉善县| 龙川县| 长宁区| 安达市| 林甸县| 祁门县| 九龙坡区| 织金县| 浦北县| 惠水县| 郴州市| 嘉定区| 巩留县| 孝义市| 乡城县| 文昌市| 宁河县| 象州县| 辉县市| 阜平县| 湘阴县| 尼勒克县| 贵南县| 年辖:市辖区| 额敏县| 东平县| 石家庄市| 华蓥市| 门头沟区| 封丘县| 施甸县| 松桃| 平度市| 灯塔市| 奉新县| 元阳县| 江华|