我应该在哪里插入或注入拦截器

时间:2016-07-12 10:01:23

标签: angularjs angular-http-interceptors

这是我在我的服务中写的内容,任何人都可以告诉我在哪里以及如何插入http拦截器,以便我可以查看每个响应并查看状态代码是否包含' 25001&# 39;如果是,则将其重定向到登录页面,请帮忙。

'use strict';
homeApp.factory('AdminDashboardService', ['$http', '$q', function($http, $q){       
        return {
             'response': function(response) {
              console.log("Yes Command comes here");
              return response;
            },

            getAllHolidays: function(monthYearArrayForHolidayList) {
                console.log("For full list of holidays list length: "+monthYearArrayForHolidayList.length);
                var isMonthly="no";
                return $http.get('/tasktrac/holiday/getHoliday/isMonthly/'+isMonthly+'/'+monthYearArrayForHolidayList)
                        .then(
                                function(response){
                                    return response.data;
                                }, 
                                function(errResponse){
                                    //console.error('Error while fetching holiday');
                                    return $q.reject(errResponse);
                                }
                        );
        }}]);

homeApp.config(['$httpProvider', function($httpProvider) {  
    $httpProvider.interceptors.push('AdminDashboardService');
}]);

掌握app.js

'use strict';
var App = angular.module('myApp',[],['ngAnimate', 'ui.bootstrap','UserValidation']);

var homeApp = angular.module("homeApp",['ngAnimate', 'ui.bootstrap']);

var cApp = angular.module('clientApp',['ngAnimate', 'ui.bootstrap']);

1 个答案:

答案 0 :(得分:0)

拦截器应该在单独的模块中定义。通常这是在factory中完成的,就像您已经完成的那样。每次在请求之前或响应之后(关于您的配置)都会执行拦截器。在您的情况下,它应该在您的回复后执行。

homeApp.factory('AdminDashboardService', ['$http', '$q', function($http, $q) {
  return {
    'response': function(response) {
      // do something on success
      return response;
    },
  }
}]);

要在每个回复中触发拦截器,您现在必须将其添加到$httpProvider

module.config(['$httpProvider', function($httpProvider) {  
    $httpProvider.interceptors.push('AdminDashboardService');
}]);

通过这样做,您的拦截器现在将在每次响应后触发。您可以在docshere处深入了解拦截器如何在Angular中工作。