나는 404 응답을 처리하기 위해 앵글로 인터셉터를 성문화하고 있습니다. 요청이 REST 서비스에서 오는 경우 인터셉터는 요청을 인터셉트해서는 안됩니다. 내 주요 문제는 요청이 페이지 요청 또는 REST 서비스 요청에서 오는 경우를 구분하는 것입니다. 현재 rejection.config.url
에 URL을 사용하고 있으며 내 REST URL 서비스가 해당 값과 일치하는지 테스트합니다. 이 접근 방식이 효과적 일지라도, 나는 이것이 좋은 해결책이 아니라고 생각합니다. 다른 방법이나 더 좋은 방법이 있을까요?각도 서비스 요원의 정상적인 요청에서 휴식 서비스와 404를 구별합니다.
인터셉터 코드 : 경우 말할 수 없다 그것의 더 나은 여부 : : 여기
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' 값을 사용하여 요청이 REST 서비스에서 오는 시점을 처리합니다. 나는 URL에서 패턴을 찾고있다. 하지만 이것이 최선의 해결책은 아니라고 생각합니다. –
보다 직선적 인 접근 방법은 서버의 REST API에 $ http 요청을하는 AngularJS 서비스에'.catch' 핸들러를 두는 것입니다. – georgeawg