如何处理不是数组的Restangular .getList()响应

时间:2014-06-27 20:58:54

标签: angularjs restangular

我正在使用的API在客户端未经过身份验证时返回带有字符串错误消息的200。所以,如果我打电话:

var restSvc = Restangular.service('message');
var deferred = restSvc.getList()

经过身份验证后,我会返回一个对象数组 - 但如果我在未经过身份验证时调用它,则会返回字符串“调用者无法进行身份验证。”

问题是我无法处理此错误,因为Restangular会抛出错误并且无法解析或失败延迟,因为它需要一个数组:

Error: Response for getList SHOULD be an array and not an object or something else

即使它不是数组,我如何处理此错误并获得响应?

1 个答案:

答案 0 :(得分:0)

您可以做的一件事是在返回数据之前添加一个响应拦截器来测试数据。如果它符合特定格式,则将其附加到响应数据。例如。

restangularConfig.addResponseInterceptor(function(response, operation) {
    if (operation === 'getList') {
        // Test your data structure here.
    }
    return response;
});

如果这是您自己设计的API,我强烈建议您更改格式以与每个请求保持一致。例如。

如果请求是好的。

{
  "status": 200,
  "content": [{},{}...]  
}

如果请求不好。

{
  "status": 401, //or what ever error
  "content": []
}