错误处理 – Restangular错误处理问题

我有一个restangular的问题.这段代码:

Restangular.one("undefined_ressource").get().then(
    function(res){
        console.log("success", res.code);
    },
    function (res) {
        console.log("fail", res.code);
   }
);

尝试获取不退出的URL http://api.local.com/undefined_ressource.我的服务器按预期返回404,但永远不会触发失败日志. Intead它进入成功回调并将“success 404”记录到控制台.

Angular version 1.2.15
Restangular version 1.3.1

任何帮助都会受到欢迎!谢谢

最佳答案
改编自您的代码示例

Restangular.one("undefined_ressource").get().then(
    function(myObject){
        console.log("success obtained myObject");
    },
    function (res) {
        console.log("fail", res.status);
   }
);

>如果Restangular调用成功:

那么应该调用第一个函数
它的参数应该是myObject.
除非你的myObject有一个特定的代码或状态字段,否则Restangular不会添加任何代码或状态字段.

>如果Restangular调用失败:

然后应该调用第二个函数,它的参数是一个具有status,header,data,config字段的响应对象.
不应该有任何代码字段可用,如您的示例所示.

如果出现HTTP 404 Not Found异常,在我的导航器javascript控制台中我会获得:
    “失败”404

带错误拦截器

myAngularApp.run(['Restangular', '$window', function(Restangular, $window){
    Restangular.setErrorInterceptor(
        function(response) {
            if (response.status == 401) {
                console.log("Login required... ");
                $window.location.href='/login';
            } else if (response.status == 404) {
                console.log("Resource not available...");
            } else {
                console.log("Response received with HTTP error code: " + response.status );
            }
            return false; // stop the promise chain
        }
    );
}]);

如果在您的角度应用程序myAngularApp上设置了错误拦截器,如上例所示,失败应该不再达到您的自定义调用,然后是第二个函数,但由errorInterceptor设置函数处理.

在HTTP 404 Not Found异常的情况下,在我的导航器javascript控制台中,我确实获得:资源不可用…

经测试:

Angular version 1.2.14
Restangular version 1.3.1

转载注明原文:错误处理 – Restangular错误处理问题 - 代码日志