分享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 相关文章推荐
利用js实现遮罩以及弹出可移动登录窗口
Jul 08 Javascript
js 上下左右键控制焦点(示例代码)
Dec 14 Javascript
JS获得选取checkbox整行数据的方法
Jan 28 Javascript
关于js里的this关键字的理解
Aug 17 Javascript
JavaScript脚本库编写的方法
Dec 09 Javascript
JavaScript面向对象程序设计教程
Mar 29 Javascript
探寻JavaScript中this指针指向
Apr 23 Javascript
JS实现AES加密并与PHP互通的方法分析
Apr 19 Javascript
JS解惑之Object中的key是有序的么
May 06 Javascript
jQuery实现的点击显示隐藏下拉菜单功能完整示例
May 17 jQuery
微信小程序开发之转发分享功能
Oct 22 Javascript
js实现3D粒子酷炫动态旋转特效
Sep 13 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中调用JAVA
2006/10/09 PHP
两个开源的Php输出Excel文件类
2010/02/08 PHP
Yii2 如何在modules中添加验证码的方法
2017/06/19 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
TP5.0框架实现无限极回复功能的方法分析
2019/05/04 PHP
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
DOM基础教程之使用DOM
2015/01/19 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
javascript设置页面背景色及背景图片的方法
2015/12/29 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
vue实现两个区域滚动条同步滚动
2020/12/13 Vue.js
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
简单介绍Python中的len()函数的使用
2015/04/07 Python
python多进程共享变量
2016/04/06 Python
Python实现拷贝多个文件到同一目录的方法
2016/09/19 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
keras打印loss对权重的导数方式
2020/06/10 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
HTML5触摸事件(touchstart、touchmove和touchend)的实现
2020/05/08 HTML / CSS
欧洲、亚洲、非洲和拉丁美洲的度假套餐:Great Value Vacations
2019/03/30 全球购物
Servlet面试题库
2015/07/18 面试题
一年级班主任寄语
2014/01/19 职场文书
产品质量承诺书范文
2014/03/27 职场文书
拉拉队口号
2014/06/16 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
办公室岗位职责
2015/02/04 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
2016年党支部公开承诺书
2016/03/25 职场文书
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript