angular之interceptors拦截器

<!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>

  

时间: 2024-10-06 19:26:15

angular之interceptors拦截器的相关文章

angular http interceptors 拦截器使用分享

拦截器 在开始创建拦截器之前,一定要了解 $q和延期承诺api 出于全局错误处理,身份验证或请求的任何同步或异步预处理或响应的后处理目的,希望能够在将请求移交给服务器之前拦截请求,并在将请求移交给服务器之前将响应拦截发起这些请求的应用程序代码-拦截器利用promise api满足同步和异步预处理的需求. 拦截器是$httpProvider通过将它们添加到$httpProvider.interceptors数组而向其注册的服务工厂.调用工厂并注入依赖项(如果指定),并返回拦截器. 有两种拦截器(和

9.Interceptors - 拦截器

1.概述 Flume有能力在运行阶段修改/删除Event,这是通过拦截器(Interceptors)来实现的. 拦截器需要实现org.apache.flume.interceptor.Interceptor接口. 拦截器可以修改或删除事件基于开发者在选择器中选择的任何条件. 拦截器采用了责任链模式,多个拦截器可以按指定顺序拦截. 一个拦截器返回的事件列表被传递给链中的下一个拦截器. 如果一个拦截器需要删除事件,它只需要在返回的事件集中不包含要删除的事件即可. 如果要删除所有事件,只需返回一个空列

springMVC之mvc:interceptors拦截器的用法

1.配置拦截器 在springMVC.xml配置文件增加: <mvc:interceptors> <!-- 日志拦截器 --> <mvc:interceptor> <mvc:mapping path="/**" /> <mvc:exclude-mapping path="/static/**" /> <bean class="拦截器java代码路径" /> </mvc:

(转)Angular中的拦截器Interceptor

什么是拦截器? 异步操作 例子 Session 注入(请求拦截器) 时间戳(请求和响应拦截器) 请求恢复 (请求异常拦截) Session 恢复 (响应异常拦截器) 转之:http://my.oschina.net/ilivebox/blog/290881?p=1 原文:Interceptors in AngularJS and Useful Examples $httpAngularJS 的 $http 服务允许我们通过发送 HTTP 请求方式与后台进行通信.在某些情况下,我们希望可以俘获所有

angular 拦截器

介绍:$http service在Angular中用于简化与后台的交互过程,其本质上使用XMLHttpRequest或JSONP进行与后台的数据交互.在与后台的交互过程中,可能会对每条请求发送到Server之前进行预处理(如加入token),或者是在Server返回数据到达客户端还未被处理之前进行预处理(如将非JSON格式数据进行转换):当然还有可能对在请求和响应过程过发生的问题进行捕获处理.所有这些需求在开发中都非常常见,所以Angular为我们提供了$http拦截器,用来实现上述需求. An

Angular http 拦截器

Angular http的拦截器一般用来处理每个http都需要添加的参数或者是统一处理错误信息 Angular1.x的http拦截器处理: $httpProvider.interceptors.push(function ($q) { return { request: function (config) { var url = config.url; //这个token表示是在登录状态, 不要用在header中,options无法设置header if(TASApp["x-auth-token

vue拦截器Vue.http.interceptors.push

刚开始学vue,github上down了一个开源项目,看源代码的时候看到了这个地方: /** * @export * @param {any} request * @param {any} next * @returns */ import store from './vuex/store' // 全局错误处理,全局loading import { setLoading, setTip } from './vuex/actions/doc_actions' export default func

Mybatis那些事-拦截器(Plugin+Interceptor)

作者:yhjyumi的专栏 Mybatis的拦截器实现机制,使用的是JDK的InvocationHandler. 当我们调用ParameterHandler,ResultSetHandler,StatementHandler,Executor的对象的时候,实际上使用的是Plugin这个代理类的对象,这个类实现了InvocationHandler接口.接下来我们就知道了,在调用上述被代理类的方法的时候,就会执行Plugin的invoke方法.Plugin在invoke方法中根据@Intercept

转载 - Struts2 拦截器详细配置过程

出处:http://www.blogjava.net/zzzlyr/archive/2009/10/12/297998.html Struts2 拦截器详细配置过程 1:所有拦截器的超级接口Interceptor ,Action去实现这个接口; Interceptor 它其中有三个方法(init(),destroy() ,interceptor()): Init()方法:在服务器起动的时候加载一次,并且只加载一次; Destroy()方法:当拦截器销毁时执行的方法; Interceptor()方