攔截器
用來向應(yīng)用的業(yè)務(wù)流程中注入新的邏輯。
攔截器的核心是服務(wù)工廠缘回,通過向httpProvider.interceptors數(shù)組中添加服務(wù)工廠枷邪,在httpProvider中進(jìn)行注冊。
-
共有四種攔截器:兩種成功攔截器忍法,兩種失敗器真慢。
- request
AngularJS通過$http設(shè)置對象來對請求攔截器進(jìn)行調(diào)用毅臊。它可以對設(shè)置對象進(jìn)行修改理茎,或者創(chuàng)建
一個新的設(shè)置對象黑界,它需要返回一個更新過的設(shè)置對象,或者一個可以返回新的設(shè)置對象的promise皂林。 - response
AngularJS通過$http設(shè)置對象來對響應(yīng)攔截器進(jìn)行調(diào)用朗鸠。它可以對響應(yīng)進(jìn)行修改,或者創(chuàng)建
一個新的響應(yīng)础倍,它需要返回一個更新過的響應(yīng)烛占,或者一個可以返回新響應(yīng)的promise。 - requestError
AngularJS會在上一個請求攔截器拋出錯誤沟启,或者promise被reject時調(diào)用此攔截器忆家。 - responseError
AngularJS會在上一個響應(yīng)攔截器拋出錯誤,或者promise被reject時調(diào)用此攔截器德迹。
- request
調(diào)用模塊的.factory()方法來創(chuàng)建攔截器芽卿,可以在服務(wù)中添加一種或多種攔截器:
$resource
Restangular
- promise
Restangular支持promise模式的異步調(diào)用,使用起來更符合AngularJS的習(xí)慣胳搞⌒独可以像使用原始的$http方法一樣對響應(yīng)進(jìn)行鏈?zhǔn)讲僮鳌?/li> - promise展開
也可以像使用$resource服務(wù)一樣使用Restangular称杨,通過很簡單的方式同時操作promise和對象 - 清晰明了
Restangular庫幾乎沒有復(fù)雜或神奇的東西,無需通過猜測或研究文檔就可以知道它是如何工作的筷转。 - 全HTTP方法支持
Restangular支持所有的HTTP方法姑原。 - 忘記URL
$resource要求明確的指定想要拉取數(shù)據(jù)的URL, Restangular并不需要事先知道URL或提前指定它們(除基礎(chǔ)URL外)呜舒。 - 資源嵌套
Restangular可以直接處理嵌套的資源锭汛,無需創(chuàng)建新的Restangular實例。 - 一個實例
同$resource不同袭蝗,使用過程中僅需要創(chuàng)建一個Restangular資源對象的實例店乐。