2013-12-10 2 views
3

저는 Restangular를 사용하여 응용 프로그램을 작성하고 있습니다. 401, 403, 500 등의 오류 핸들링을 한 곳에서 구현할 것입니다. Restangle이있는 오류 코드 (401, 403) 처리

은 내가 쓴 것입니다 : 실제로는 200가 제대로 볼 것을입니다 어떻게됩니까

RestangularProvider.setResponseExtractor(function(response, operation, what, url) { 
    switch(response.meta.code) { 
    case 200: 
     // Handle 200 
    break; 

    case 401: 
     // Redirect to login 
    break; 

    /* ... */ 

    default: 
    break; 
    } 
} 

을하지만,이 방법은 401 에 대한 모든 I는 서버 측에서 얻는 JSON을 공격하지 않는 것이

{"meta":{"apiVersion":"0.1","code":200,"errors":null},"response":{"response":"value"}} 

{"meta":{"apiVersion":"0.1","code":401,"errors":[{"code":401,"message":"Unauthorized"}]},"response":null} 
를 : 성공적인 응답을 다음과 같이 포맷

오류. 응답 헤더에는 Status Code:401 Unauthorized도 포함됩니다. 내가 뭘 잘못하고 있니?

답변

11

401이고 모든 오류 코드는 responseInterceptor가 아니라 errorInterceptor에 도달합니다. responseInterceptor는 성공적인 응답으로 만 호출됩니다!

+0

errorInterceptor에서 헤더 등을 사용하여 완전한 응답을 얻고 있으며 동일한 오류가 다시 발생합니다. 데이터를 추출하여이를 반환 할 수있는 방법이 있습니까? errorInterceptor에서 데이터를 반환하려고하지만 여전히 내 오류 후크에서 전체 응답을받습니다. –

+2

명확히하기 위해 - 모든 4xx 또는 5xx 상태 코드는 errorInterceptor를 사용하고 다른 모든 상태 코드는 responseInterceptor를 사용합니다 - 정확합니까? – Bungle