Так что я вытащил перехватчик прямо из угловой документации по HTTP, и все же это все еще не работает. Функции «запрос» и «ответ» вызываются, но никогда не «requestError» или «responseError».Угловой HTTP-перехватчик не работает с ошибками
myApp.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push(function ($q) {
return {
'request': function (config) {
return config; //gets called
},
'requestError': function (rejection) {
return $q.reject(rejection); //Never gets called
},
'response': function (response) {
return response; //gets called
},
'responseError': function (rejection) {
return $q.reject(rejection); //Never gets called
}
};
});
}]);
На сервере я возвращаю 400, но на самом деле любая ошибка будет делать. И вот услуга
User.publicProfileGetProfile = function (value, type) {
return $http({
url: '/public/profile/' + type + '/' + value,
method: 'GET'
}).then(function (response) {
return response;
}, function(error){
return error;
});
};
Не вызываются функции ошибки, и каждый ответ проходит через функцию ответа. Стандартная угловая ошибка отображается с Bad Request (400), как обычно. Когда возвращается ошибка 400, она просто «не определена» через функцию «ответ» в перехватчике.
Сообщите мне, если я забыл включить какую-либо важную информацию.
Так что я сделал это изменение ... однако функция ответа (и все еще неопределенная) все еще вызывается и в контроллере результат ошибки все равно никогда не вызывается. – fjaxyu
Перехватчик 'errorResponse' вызывается для ответов о состоянии 400 в [this JSFiddle DEMO] (https://jsfiddle.net/hawfLnx1/). – georgeawg
Спасибо! Когда я увидел, что JSFiddle работает правильно, я убедился, что мой выглядел точно так же. Когда это не сработало, я осмотрелся, чтобы увидеть, есть ли у меня какие-либо другие перехватчики, которые могут вызвать проблемы. У меня был другой перехватчик, который сначала попал, и возвращал какие-то ошибки в качестве ответов, затем они проходили через это, и он обрабатывал бы его как успешный ответ. Я удалил его, и теперь все работает правильно! – fjaxyu