拦截器
用来向应用的业务流程中注入新的逻辑。
拦截器的核心是服务工厂,通过向httpProvider.interceptors数组中添加服务工厂,在httpProvider中进行注册。
-
共有四种拦截器:两种成功拦截器,两种失败器。
- request
AngularJS通过$http设置对象来对请求拦截器进行调用。它可以对设置对象进行修改,或者创建
一个新的设置对象,它需要返回一个更新过的设置对象,或者一个可以返回新的设置对象的promise。 - response
AngularJS通过$http设置对象来对响应拦截器进行调用。它可以对响应进行修改,或者创建
一个新的响应,它需要返回一个更新过的响应,或者一个可以返回新响应的promise。 - requestError
AngularJS会在上一个请求拦截器抛出错误,或者promise被reject时调用此拦截器。 - responseError
AngularJS会在上一个响应拦截器抛出错误,或者promise被reject时调用此拦截器。
- request
调用模块的.factory()方法来创建拦截器,可以在服务中添加一种或多种拦截器:
$resource
Restangular
- promise
Restangular支持promise模式的异步调用,使用起来更符合AngularJS的习惯。可以像使用原始的$http方法一样对响应进行链式操作。 - promise展开
也可以像使用$resource服务一样使用Restangular,通过很简单的方式同时操作promise和对象 - 清晰明了
Restangular库几乎没有复杂或神奇的东西,无需通过猜测或研究文档就可以知道它是如何工作的。 - 全HTTP方法支持
Restangular支持所有的HTTP方法。 - 忘记URL
$resource要求明确的指定想要拉取数据的URL, Restangular并不需要事先知道URL或提前指定它们(除基础URL外)。 - 资源嵌套
Restangular可以直接处理嵌套的资源,无需创建新的Restangular实例。 - 一个实例
同$resource不同,使用过程中仅需要创建一个Restangular资源对象的实例。