【问题标题】:How to handle Restangular .getList() response that's not an array如何处理不是数组的 Restangular .getList() 响应
【发布时间】:2014-08-19 02:05:37
【问题描述】:

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

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

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

问题是我无法处理这个错误,因为 Restangular 抛出一个错误并且没有解决或失败 deferred 因为它需要一个数组:

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

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

【问题讨论】:

    标签: angularjs restangular


    【解决方案1】:

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

    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": []
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多