Restangular: addResponseInterceptor не работает

Я работаю над проектом angularjs.

В app.js я использовал addResponseInterceptor для перехвата каждого запроса к серверу. Если в ответе нет ошибки (response.status == 200 OK), то все работает отлично. Но я хочу перехватить, в частности, когда (response.status == 401). В этом случае я хочу перенаправить пользователя на страницу входа. Но это не работает.

Вот мой код app.js addResponseInterceptor:

RestangularProvider.addResponseInterceptor(function(data, operation, what, url, response, deferred) {
        if (response.status === 401)
        {
            window.location = 'To the login page';
        } else
        {
            var extractedData;
            extractedData = data;
            return extractedData;
        }
    });

Я получил эту ошибку, когда запрос отказывается получать данные

введите здесь описание изображения

Я попытался отладить ответ с помощью "console.log(response)", но он ничего не отображает. Похоже, что если в ответе есть ошибка, то он не входит в блок перехватчика.


person Napster    schedule 16.04.2015    source источник
comment
вам нужно добавить errorResponseIntercetpor в случае ошибки   -  person harishr    schedule 16.04.2015
comment
@entre : Как я могу добавить errorResponseIntercetpor ?   -  person Napster    schedule 16.04.2015


Ответы (1)


что вам нужно, это error-intesetpr. пример ниже

Restangular.setErrorInterceptor(function(response, deferred, responseHandler) {
    if(response.status === 403) {
        refreshAccesstoken().then(function() {
            // Repeat the request and then call the handlers the usual way.
            $http(response.config).then(responseHandler, deferred.reject);
            // Be aware that no request interceptors are called this way.
        });

        return false; // error handled
    }

    return true; // error not handled
});
person harishr    schedule 16.04.2015