Angular中的interceptors拦截器

发布时间 - 2026-01-11 02:02:24    点击率:

废话不多说了,直接给大家贴代码了,具体代码如下所述;

<!DOCTYPE html>
<html ng-app="nickApp">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
  <title>interceptors</title>
  <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
  <script>
    /*
     $http service在Angular中用于简化与后台的交互过程,其本质上使用XMLHttpRequest或JSONP进行与后台的数据交互。
     在与后台的交互过程中,可能会对每条请求发送到Server之前进行预处理(如加入token),或者是在Server返回数据到达客户端还未被处理之前进行预处理(如将非JSON格式数据进行转换);
     当然还有可能对在请求和响应过程过发生的问题进行捕获处理。所以Angular为我们提供了$http拦截器,用来实现上述需求。*/
    /*
     $httpProvider中有一个 interceptors 数组,而所谓拦截器只是一个简单的注册到该数组中的常规服务工厂。
     1 首先 创建一个拦截器服务工厂
     */
    angular.module('nickApp', [])
        .factory('NickInterceptor', ['$q', function ($q) {
          return {
            // 可选,拦截成功的请求
            /*
             该方法会在$http发送请求到后台之前执行,因此你可以修改配置或做其他的操作。
             该方法接收请求配置对象(request configuration object)作为参数,然后必须返回配置对象或者promise 。
             如果返回无效的配置对象或者 promise 则会被拒绝,导致$http 调用失败
             */
            request: function (config) {
              // 进行预处理
              // 例如加令牌
              config.headers['Authorization'] = 'token666';
              /*
               Request Headers
               token:token666 //加的令牌
               */
              return config || $q.when(config);
            },
            // 可选,拦截成功的响应
            /*
             该方法会在$http接收到从后台过来的响应之后执行,因此你可以修改响应或做其他操作。
             该方法接收响应对象(response object)作为参数,
             然后必须返回响应对象或者promise。响应对象包括了请求配置(request configuration),头(headers),状态(status)和从后台过来的数据(data)。
             如果返回无效的响应对象或者 promise 会被拒绝,导致$http调用失败。
             */
            response: function (response) {
              // 进行预处理
              // 例如 JSON.parse(response)等
              return response || $q.when(reponse);
            },
            // 可选,拦截失败的请求
            /*
             有时一个请求发送失败或者被拦截器拒绝了。requestError拦截器会捕获那些被上一个请求拦截器中断的请求。
             它可以用来恢复请求或者有时可以用来撤销请求之前所做的配置,比如关闭遮罩层,显示进度条,激活按钮和输入框之类的。
             */
            requestError: function (rejection) {
              // 对失败的请求进行处理
              // 例如 统一的弹窗提示
              return $q.reject(rejection);
            },
            // 可选,拦截失败的响应
            /*
             有时候我们后台调用失败了。也有可能它被一个请求拦截器拒绝了,或者被上一个响应拦截器中断了。
             在这种情况下,响应异常拦截器可以帮助我们恢复后台调用。
             */
            responseError: function (rejection) {
              // 对失败的响应进行处理
              // 例如 统一的弹窗提示
              return $q.reject(rejection);
            }
          };
        }])
        /*
         $httpProvider中有一个 interceptors 数组,而所谓拦截器只是一个简单的注册到该数组中的常规服务工厂。
         2 在config方法中,将拦截器加入到$httpProvider.interceptors数组中
         */
        .config(['$httpProvider', function ($httpProvider) {
          $httpProvider.interceptors.push('NickInterceptor');
        }])
        .controller('bodyCtl', ['$scope', '$http', function ($scope, $http) {
          $scope.test1 = function () {
            console.log(11);
            $http.get('interceptors.html');
          };
        }])
  </script>
</head>
<body ng-controller="bodyCtl">
<button class="btn" ng-click="test1()">click me</button>
<div ng-view></div>
</body>
</html>

以上所述是小编给大家介绍的Angular中的interceptors拦截器,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!


# angular  # interceptors拦截器  # vue-resource 拦截器interceptors使用详解  # 分享Angular http interceptors 拦截器使用(推荐)  # 浅谈Vue网络请求之interceptors实际应用  # 详解AngularJS用Interceptors来统一处理HTTP请求和响应  # axios的interceptors多次执行问题解决  # 拦截器  # 可选  # 你可以  # 令牌  # 中有  # 组中  # 会在  # 给大家  # 只是一个  # 所述  # 小编  # 到该  # 被拒  # 是在  # 也有  # 说了  # 拒绝了  # 不多  # 其他的  # 会对 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Win11怎么设置默认图片查看器_Windows11照片应用关联设置  网站制作免费,什么网站能看正片电影?  北京专业网站制作设计师招聘,北京白云观官方网站?  如何在 React 中条件性地遍历数组并渲染元素  网页设计与网站制作内容,怎样注册网站?  高防服务器租用指南:配置选择与快速部署攻略  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  Laravel如何实现本地化和多语言支持?(i18n教程)  如何用美橙互联一键搭建多站合一网站?  如何在阿里云虚拟服务器快速搭建网站?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  Laravel Docker环境搭建教程_Laravel Sail使用指南  Laravel PHP版本要求一览_Laravel各版本环境要求对照  制作旅游网站html,怎样注册旅游网站?  高端建站三要素:定制模板、企业官网与响应式设计优化  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  如何在局域网内绑定自建网站域名?  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  如何在阿里云域名上完成建站全流程?  Android 常见的图片加载框架详细介绍  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  LinuxCD持续部署教程_自动发布与回滚机制  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  做企业网站制作流程,企业网站制作基本流程有哪些?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  深圳网站制作的公司有哪些,dido官方网站?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  高端建站如何打造兼具美学与转化的品牌官网?  如何在Windows虚拟主机上快速搭建网站?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Android okhttputils现在进度显示实例代码  Laravel如何使用Service Container和依赖注入?(代码示例)  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  ,交易猫的商品怎么发布到网站上去?  ,在苏州找工作,上哪个网站比较好?  如何构建满足综合性能需求的优质建站方案?  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  如何用腾讯建站主机快速创建免费网站?  高防服务器租用首荐平台,企业级优惠套餐快速部署  独立制作一个网站多少钱,建立网站需要花多少钱?  如何在景安服务器上快速搭建个人网站?  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  如何在阿里云购买域名并搭建网站?  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项