2017-12-30 16 views
2

게시 요청을하고 데이터를 반환하는 서비스가 있습니다. 각도 500 오류 처리가 작동하지 않습니다.

app.service('flagService', ['$http', function ($http) { 
this.getData = function (r, c) { 
    return $http.post('http://localhost:8080/api/flag', { row: r, column: c }).then(function (data) { 
     return data; 
    }) 
} 
}]); 

그리고 어딘가에 컨트롤러

flagService.getData(row, column).then(function() { 
    console.log('it works') 
}) 

그러나 API의

는 500 상태 코드를 반환 할 수 있습니다. 이 경우 콘솔에서 "처리 할 수없는 거부 가능성"을 얻습니다. 이제 간단하게 alert()을 만들고 싶습니다.이 오류는 500 오류가 반환 될 때 열립니다. 저는 두 번째 기능인 .catch(), .error()을 포함하여 많은 솔루션을 시도했습니다.

app.service('flagService', ['$http', function ($http) { 
this.getData = function (r, c) { 
    return $http.post('http://localhost:8080/api/flag', { row: r, column: c }).then(function (data) { 
     return data; 
    }, function (error) { 
     console.log(error) 
    }).catch(function() {console.log('error')}).error(function() {console.log('error')}) 
} 
}]); 

하지만 여전히 오류는 없습니다. 어떤 해결책? 감사!

답변

0

글로벌 오류 처리를 위해 인터셉터를 사용할 수 있으며 거부로 요청이 해결 될 때마다 responseError가 호출됩니다.

.factory('myInterceptor', ['$q', '$location', '$injector', function ($q, $location, $injector) { 
    return { 
     response: function (response) { 
      return response || $q.when(response); 
     }, 
     responseError: function (rejection) { 
      if (rejection.status === 500) { 
       console.log('http 500 response') 
      } 
      return $q.reject(rejection); 
     } 
    } 
}]) 
.config(['$httpProvider', function ($httpProvider) { 
    $httpProvider.interceptors.push('myInterceptor'); 
}]);