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


Posted in Javascript onNovember 10, 2019

AngularJS 简介

AngularJS 是一个 JavaScript 框架。它可通过 <script> 标签添加到 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 拦截器使用,希望对大家有所帮助!

Javascript 相关文章推荐
JavaScript Event学习第三章 早期的事件处理程序
Feb 07 Javascript
javascript innerHTML使用分析
Dec 03 Javascript
情人节之礼 js项链效果
Feb 13 Javascript
node.js中的fs.ftruncate方法使用说明
Dec 15 Javascript
JS实现网页表格自动变大缩小的方法
Mar 09 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
Apr 29 Javascript
详解angularjs popup-table 弹出框表格指令
Sep 20 Javascript
JS实现点击链接切换显示隐藏内容的方法
Oct 19 Javascript
vue 组件使用中的一些细节点
Apr 25 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
Nov 30 Javascript
Vue使用.sync 实现父子组件的双向绑定数据问题
Apr 04 Javascript
JavaScript常用8种数组去重代码实例
Sep 09 Javascript
vue-父子组件和ref实例详解
Nov 10 #Javascript
vue $set 给数据赋值的实例
Nov 09 #Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
Nov 09 #Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
Nov 09 #Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
Nov 09 #Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
Nov 09 #Javascript
Vue实现点击按钮复制文本内容的例子
Nov 09 #Javascript
You might like
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
php笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
[原创]php使用curl判断网页404(不存在)的方法
2016/06/23 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
PHP自定义错误用法示例
2016/09/28 PHP
PHP substr()函数参数解释及用法讲解
2017/11/23 PHP
jquery tools系列 expose 学习
2009/09/06 Javascript
js截取小数点后几位的写法
2013/11/14 Javascript
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
详解react-redux插件入门
2018/04/19 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
JS数组扁平化、去重、排序操作实例详解
2020/02/24 Javascript
BootStrap前端框架使用方法详解
2020/02/26 Javascript
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
基于python实现查询ip地址来源
2020/06/02 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
计算 s=(x*y)1/2,用两个宏定义来实现
2016/08/11 面试题
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
财务会计专业应届毕业生求职信
2013/10/18 职场文书
师范毕业生求职信
2014/07/11 职场文书
工商局局长个人对照检查材料思想汇报
2014/09/23 职场文书
违章停车检讨书
2014/10/21 职场文书
2015年九一八事变纪念日演讲稿
2015/03/19 职场文书
初一数学教学反思
2016/02/17 职场文书
《乘法分配律》教学反思
2016/02/24 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书
vue特效之翻牌动画
2022/04/20 Vue.js