我正在使用Restangular构建应用程序。我会在一个地方实现处理错误,如401,403,500等在响应拦截器中。
这就是我写的:
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
。
我做错了什么?
答案 0 :(得分:11)
401并且任何错误代码都会命中errorInterceptor,而不是responseInterceptor。只有成功的响应才会调用responseInterceptor!