分享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 相关文章推荐
Textarea与懒惰渲染实现代码
Jan 04 Javascript
node.js中的console用法总结
Dec 15 Javascript
详解javascript高级定时器
Dec 31 Javascript
基于JS实现数字+字母+中文的混合排序方法
Jun 06 Javascript
微信小程序 progress组件详解及实例代码
Oct 25 Javascript
js 实现一些跨浏览器的事件方法详解及实例
Oct 27 Javascript
ES6中module模块化开发实例浅析
Apr 06 Javascript
基于 webpack2 实现的多入口项目脚手架详解
Jun 26 Javascript
Vue.js实现tab切换效果
Jul 24 Javascript
vue 使用鼠标滚动加载数据的例子
Oct 31 Javascript
javascript使用canvas实现饼状图效果
Sep 08 Javascript
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
Oct 05 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的ZIP压缩类分享
2014/05/04 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
JS的location.href跳出框架打开新页面的方法
2014/09/04 Javascript
javascript下拉列表菜单的实现方法
2015/11/18 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
2015/11/30 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
Python 变量类型及命名规则介绍
2013/06/08 Python
python开启多个子进程并行运行的方法
2015/04/18 Python
基于pandas数据样本行列选取的方法
2018/04/20 Python
基于Python log 的正确打开方式
2018/04/28 Python
python实现烟花小程序
2019/01/30 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
Python函数式编程实例详解
2020/01/17 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
戴森西班牙官网:Dyson西班牙
2020/02/04 全球购物
几道Web/Ajax的面试题
2016/11/05 面试题
校长岗位职责
2013/11/26 职场文书
行政人员岗位职责
2013/12/08 职场文书
婚假请假条怎么写
2014/04/10 职场文书
运动会跳远广播稿
2015/08/19 职场文书
银行培训心得体会范文
2016/01/09 职场文书
Python Django 后台管理之后台模型属性详解
2021/04/25 Python
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers
python百行代码实现汉服圈图片爬取
2021/11/23 Python
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js