分享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高级程序设计 读书笔记之十一 内置对象Global
Mar 07 Javascript
前台js调用后台方法示例
Dec 02 Javascript
浅谈jQuery中replace()方法
May 13 Javascript
AngularJS 中的指令实践开发指南(一)
Mar 20 Javascript
微信小程序 教程之注册页面
Oct 17 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
Nov 18 Javascript
jQuery动态产生select option下拉列表
Mar 15 Javascript
JavaScript输出所选择起始与结束日期的方法
Jul 12 Javascript
js获取css的各种样式并且设置他们的方法
Aug 22 Javascript
JS开发中基本数据类型具体有哪几种
Oct 19 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
Sep 21 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
Nov 09 jQuery
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使用fsockopen函数发送post,get请求获取网页内容的方法
2014/11/15 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
一个网马的tips实现分析
2010/11/28 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
jquery删除指定的html标签并保留标签内文本内容的方法
2014/04/02 Javascript
JavaScript解析json格式数据简单示例
2014/12/09 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
用js实现博客打赏功能
2016/10/24 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
微信JS-SDK选取手机照片上传功能
2017/04/21 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
Vue 后台管理类项目兼容IE9+的方法示例
2019/02/20 Javascript
用webpack4开发小程序的实现方法
2019/06/04 Javascript
python实现将pvr格式转换成pvr.ccz的方法
2015/04/28 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
Python中使用支持向量机(SVM)算法
2017/12/26 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
python如何使用unittest测试接口
2018/04/04 Python
Python Selenium库的基本使用教程
2021/01/04 Python
Python 中Operator模块的使用
2021/01/30 Python
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
本科生的职业生涯规划范文
2014/01/09 职场文书
大学生开西餐厅创业计划书
2014/02/01 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
出纳试用期自我鉴定
2014/04/07 职场文书
高三上学期学习自我评价
2014/04/23 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
毕业证委托书范文
2014/09/26 职场文书
推广普通话的宣传语
2015/07/13 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
Python Pandas知识点之缺失值处理详解
2021/05/11 Python
Log4j.properties配置及其使用
2021/08/02 Java/Android