分享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 form 验证函数 弹出对话框形式
Jun 23 Javascript
基于jquery的禁用右键、文本选择功能、复制按键的实现代码
Aug 27 Javascript
简介JavaScript中的unshift()方法的使用
Jun 09 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
Aug 25 Javascript
javascript对象的创建和访问
Mar 08 Javascript
基于BootStrap的前端分页带省略号和上下页效果
May 18 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
Jun 04 Javascript
JS与HTML结合实现流程进度展示条思路详解
Sep 03 Javascript
Three.js实现绘制字体模型示例代码
Sep 26 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
Dec 25 jQuery
vue.js 实现点击按钮动态添加li的方法
Sep 07 Javascript
3分钟了解vue数据劫持的原理实现
May 01 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
php PDO中文乱码解决办法
2009/07/20 PHP
php程序之die调试法 快速解决错误
2009/09/17 PHP
php牛逼的面试题分享
2013/01/18 PHP
PHP防止注入攻击实例分析
2014/11/03 PHP
javascript EXCEL 操作类代码
2009/07/30 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
基于Jquery实现键盘按键监听
2014/05/11 Javascript
js检测判断日期大于多少天的方法
2015/05/04 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
JavaScript生成.xls文件的代码
2016/12/22 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
vue实现nav导航栏的方法
2017/12/13 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
深入剖析Node.js cluster模块
2018/05/23 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
python判断完全平方数的方法
2018/11/13 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
Vision Direct比利时:在线订购隐形眼镜
2019/08/27 全球购物
护理自荐信范文
2013/10/05 职场文书
春节联欢晚会主持词
2014/03/24 职场文书
周年庆典主持词
2014/04/02 职场文书
提拔干部考察材料
2014/05/26 职场文书
申报优秀教师材料
2014/12/16 职场文书
节水倡议书
2015/01/19 职场文书
详解PHP设计模式之依赖注入模式
2021/05/25 PHP
Python使用pyecharts控件绘制图表
2022/06/05 Python
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript