Где я должен вставить или ввести перехватчик

Это то, что я написал в своем сервисе. Может кто-нибудь сказать мне, где и как я должен вставить http-перехватчик, чтобы я мог проверить каждый ответ и посмотреть, содержит ли код состояния "25001" и если да, то перенаправить его на страницу входа, пожалуйста, помогите.

'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 ответ

Перехватчики должны быть определены в отдельных модулях. Обычно это делается в 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');
}]);

Таким образом, ваш перехватчик будет срабатывать после каждого ответа. Вы можете более подробно взглянуть на то, как перехватчики работают в Angular, в документах или здесь, для некоторых примеров.

Другие вопросы по тегам