Я кодирую перехватчик в Angular для обработки 404 ответов. Когда запрос поступает из службы REST, перехватчик не должен перехватывать запрос. Моя основная проблема заключается в том, чтобы различать, когда запрос поступает из запроса страницы или из запроса службы REST. В настоящее время я использую URL-адрес в rejection.config.url
и тестирую, соответствует ли моя служба URL REST этому значению. Хотя этот подход работает, я думаю, что это не очень хорошее решение. Есть ли другой способ или лучший способ сделать это?Дифференцировать 404 из службы Rest из обычного запроса в угловых перехватчиках
перехватчик Код:
angular.module("mainApp").factory("notFoundInterceptor",['$q','$location','$rootScope', function ($q,$location,$rootScope) {
return {
responseError: function (rejection) {
function isURLFromRESTService(rejection) {
var url = /myresturl/; //pattern used to match REST URL
return url.test(rejection.config.url);
}
if (rejection.status === 404 and !isURLFromRESTService(rejection)) { // Not found
$rootScope.notFound = {
erro: 'Não possível encontrar: ' + $location.url()
}
$location.path('/notfound');
}
return $q.reject(rejection);
}
};}]);
URL-адрес запроса доступен как 'response.config.url'. – georgeawg
Да, @georgeawg. Вы правы. Я использую 'response.config.url'value для обработки, когда запрос поступает из служб REST. Я просматриваю шаблон по URL-адресу. Но я думаю, что это не лучшее решение. –
Более прямой подход заключается в том, чтобы поместить обработчик '.catch' в службу AngularJS, которая делает запрос $ http для API REST на сервере. – georgeawg