angularjs ajax拦截器,分享Angular http interceptors 拦截器使用(推荐)

AngularJS 简介

AngularJS 是一个 JavaScript 框架。它可通过 标签添加到 HTML 页面。

AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML。

拦截器

在开始创建拦截器之前,一定要了解 $q和延期承诺api

出于全局错误处理,身份验证或请求的任何同步或异步预处理或响应的后处理目的,希望能够在将请求移交给服务器之前拦截请求,并在将请求移交给服务器之前将响应拦截发起这些请求的应用程序代码-拦截器利用promise api满足同步和异步预处理的需求。

拦截器是$httpProvider通过将它们添加到$httpProvider.interceptors数组而向其注册的服务工厂。调用工厂并注入依赖项(如果指定),并返回拦截器。

有两种拦截器(和两种拒绝拦截器):

request:拦截器通过http config对象调用。该函数可以自由修改config对象或创建新对象。函数需要config直接返回对象,或者包含config或新config对象的Promise。

requestError:当先前的拦截器抛出错误或被拒绝解决时,拦截器将被调用。

response:拦截器通过http response对象调用。该函数可以自由修改response对象或创建新对象。函数需要response直接返回对象,或者作为包含response或新response对象的承诺。

responseError:当先前的拦截器抛出错误或被拒绝解决时,拦截器将被调用。

// 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

}

};

});

此处有一个坑,在push时,提示未定义拦截器,因为$httpProvider在config 拦截器时,拦截器service 还不能找到,

可以将拦截器service 定义在config依赖的模块中使用。

以上内容是小编给大家分享Angular http interceptors 拦截器使用,希望对大家有所帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值