Задать вопрос
@3Doleg

Почему интерсепторы в Angular реагируют на каждый запрос?

У меня есть 2 модуля и в кажном модуле есть сервисы для работы с $http. Я пишу 2 интерсептора в конфиге этих 2х модулей соответственно, реализую там 'request' метод, и потом в конфиге пушу все это в $httpProvider. Почему, когда я делаю request не в пределах этих модулей, они всеравно реагируют на запросы, и, также, грузят хедеры, футеры и т.п.?

Module 1:
var module1 = angular.module('Module1', []);

module1.config(['$httpProvider', function($httpProvider){

    function a1($q) {
        return {
            'request': function (config) {
                    console.log('request 1');
                    return config;  
            }
        };
    }
    
    $httpProvider.interceptors.push(a1);

}]);


Module 2:
var module2 = angular.module('Module2', []);

module2.config(['$httpProvider', function($httpProvider){

    function a1($q) {
        return {
            'request': function (config) {
                    console.log('request 2');
                    return config;  
            }
        };
    }
    
    $httpProvider.interceptors.push(a1);

}]);

И подключаю их в главный модуль.
Результат:
9f3cb4936249487a8ec58b3f154341a4.png

А мне нужно в кажном модуле свою обработку, раньше использовал Promises, интересно, можно ли сделать этим методом...

И на засыпку: если я всетаки буду обрабатывать с промисами, а регистрацию сделаю с помощью Interceptors, будет ли одно перекривать другое?

Большое спасибо!
  • Вопрос задан
  • 357 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
Вы неправильно используете interceptor. Он нужен не для обработки ответа, а для преобразования полученного от сервера ответа в нужный вид, либо для каких-то других действий, которые нужно выполнить при непосредственно обработке ответа.
Для обработки собственно ответа нужно использовать Promises API:

// $http и $resource возвращают Promise
$http.get('/my/cool/url')
.then(function(data) {
    // здесь обрабатываем корректный результат запроса
},
function(error) {
    // здесь некорректный
});


Посмотрите сервис $resource, это небольшая обёртка над $http, довольно удобен, особенно при работе с RESTfull API.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы