2013-12-10 89 views
3

我正在使用Restangular構建應用程序。我會在一個地方實現處理像響應攔截器中的401,403,500等錯誤。使用Restangular處理錯誤代碼(401,403)

這是我寫的:

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

    case 401: 
     // Redirect to login 
    break; 

    /* ... */ 

    default: 
    break; 
    } 
} 

實際發生的那就是200是正確看到但這種方法是不是打在所有的401 的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和任何錯誤代碼將打到errorInterceptor,而不是responseInterceptor。 responseInterceptor只有成功響應纔會調用!

+0

對errorInterceptor,我得到完整的響應,即與頭等,並相同的獲取返回到我的錯誤鉤。有什麼方法可以提取數據並僅返回該數據? 我想從errorInterceptor返回數據,但仍然收到我的錯誤鉤子中的完整響應。 –

+2

爲了澄清 - 所有4xx或5xx狀態碼都使用errorInterceptor,所有其他狀態碼都使用responseInterceptor - 是否正確? – Bungle