2014-01-21 6 views
4

저는 angular.js로 웹 앱을 개발하고 있습니다. 현재는 오류를 처리하는 적절한 방법이 무엇인지 혼란스러워합니다. 내 응용 프로그램에서 ngResource를 사용하여 서버의 나머지 API를 호출했습니다. 그래서 많은 ngResource API 호출을 할 것입니다.서버 측 오류를 올바르게 처리하는 방법은 무엇입니까?

사용자 리소스, user.query(), user.get(), user.save() ...... 모든 ngResource API 호출에 오류 콜백을 추가한다고 가정합니까? 모든 종류의 오류를 처리하는 방법 : 서버 다운 또는 인터넷 액세스 없음 ??

나는 모든 ngResource API 호출에 오류 콜백을 넣는 것이 좋습니다. 그러면 많은 중복 코드가 생겨 코드가 깔끔하게 정리되지 않습니다.

다양한 오류 유형을 처리하려면 어떻게해야합니까?

답변

8

당신은 인터셉터를 사용하여 오류가 발생하면 당신이 원하는 무엇이든 할 수 있습니다

var app = angular.module("myApp", []); 

app.config(function ($provide, $httpProvider) { 
    $provide.factory('ErrorInterceptor', function ($q) { 
     return { 
      responseError: function(rejection) { 
       console.log(rejection); 
       return $q.reject(rejection); 
      } 
     }; 
    }); 

    $httpProvider.interceptors.push('ErrorInterceptor'); 
}); 

당신이 상태 코드를 읽고 당신이 필요로 무엇을 할 수이 인터셉터로 (완벽한 유스 케이스는 사용자를 리디렉션하는 것입니다 상태 코드가 401이면 로그인 페이지로).

ngResource는 $ http를 사용하므로 자원 메소드를 호출 할 때 인터셉터도 실행됩니다.

물론 요청이 이루어지기 전후에 더 많은 작업을 수행하고 인터셉터를 추가 할 수 있습니다. http://docs.angularjs.org/api/ng.$http

이 바이올린을 참조하십시오 : http://jsfiddle.net/4Buyn/ 작업 예제에 대한

은 여기에 전체 문서를 참조하십시오.

+0

감사합니다. Mickael. 나는 인터셉터가 전역 에러 처리를 달성하는 방법이라고 생각한다. –