分享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中打印当前的时间实现思路及代码
Dec 18 Javascript
JS 弹出层 定位至屏幕居中示例
May 21 Javascript
jquery实现漂亮的二级下拉菜单代码
Aug 26 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
Nov 18 Javascript
js实现楼层导航功能
Feb 23 Javascript
JavaScript中双向数据绑定详解
May 03 Javascript
Vue-Router进阶之滚动行为详解
Sep 13 Javascript
angular.js实现购物车功能
Oct 23 Javascript
vue的常用组件操作方法应用分析
Apr 13 Javascript
微信小程序如何使用云开发
May 17 Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
May 23 jQuery
JS画布动态实现黑客帝国背景效果
Nov 08 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
大师制作的中短波矿石收音机
2020/04/02 无线电
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
laravel实现上传图片并在页面显示的例子
2019/10/14 PHP
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
js tab效果的实现代码
2009/12/26 Javascript
jquery插件 autoComboBox 下拉框
2010/12/22 Javascript
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
jquery查找tr td 示例模拟
2014/05/08 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
jquery实现的V字形显示效果代码
2015/10/27 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
javascript函数的四种调用模式
2017/01/08 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
Python分支结构(switch)操作简介
2018/01/17 Python
程序员的七夕用30行代码让Python化身表白神器
2019/08/07 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
Python 中使用 PyMySQL模块操作数据库的方法
2019/11/10 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
Java编程面试题
2016/04/04 面试题
运动会广播稿300字
2014/01/10 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
超市开学活动方案
2014/03/01 职场文书
干部考核评语
2014/04/29 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
民事诉讼代理授权委托书
2014/10/11 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
领导干部“四风”查摆问题个人整改措施
2014/10/28 职场文书
企业整改报告范文
2014/11/08 职场文书
python神经网络学习 使用Keras进行回归运算
2022/05/04 Python
Win11右下角图标点了没反应怎么办?Win11点击右下角图标无反应解决方法汇总
2022/07/07 数码科技