使用Restangular处理错误代码(401,403)

Mim*_*imo 3 angularjs restangular

我正在使用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;
  }
}
Run Code Online (Sandbox Code Playgroud)

实际发生的是200正确看到但是这个方法根本没有被401命中.我从服务器端获得的JSON格式如下,以便成功响应:

{"meta":{"apiVersion":"0.1","code":200,"errors":null},"response":{"response":"value"}}
Run Code Online (Sandbox Code Playgroud)

{"meta":{"apiVersion":"0.1","code":401,"errors":[{"code":401,"message":"Unauthorized"}]},"response":null}
Run Code Online (Sandbox Code Playgroud)

为了错误.响应头也包含Status Code:401 Unauthorized.我究竟做错了什么?

mgo*_*nto 11

401和任何错误代码都会命中errorInterceptor,而不是responseInterceptor.只有成功的响应才会调用responseInterceptor!

  • 只是为了澄清 - 所有4xx或5xx状态代码都使用errorInterceptor,而所有其他状态代码都使用responseInterceptor - 这是正确的吗? (2认同)