1
我正在編寫Angular中的攔截器來處理404響應。當請求來自REST服務時,攔截器不能攔截請求。我的主要問題是區分請求來自頁面請求還是來自REST服務請求。目前,我在使用rejection.config.url
中的URL並測試我的REST URL服務是否與該值匹配。雖然這種方法行得通,但我認爲這不是一個好的解決方案。有沒有其他方法或更好的方法來做到這一點?從角度攔截器中的正常請求中區分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中的模式。但我認爲這不是一個最好的解決方案。 –
更直接的方法是在一個AngularJS服務中放置一個'.catch'處理程序,該服務向服務器上的REST API發出$ http請求。 – georgeawg