如何在Restangular中通过POST获取列表?

时间:2014-05-20 00:58:01

标签: json angularjs rest post restangular

考虑像/ api / users / findByCriteria这样的REST URL,它接收包含条件详细信息的POSTed JSON,并输出用户列表。

如何使用Restangular调用它以使其结果类似于Restangulars getList()?

Restangular.all('users')。post(“findByCriteria”,crit)...可能有效,但我不知道如何让Restangular认识到结果将是用户列表

Restangular.all('users')。getListFromPOST(“findByCriteria”,crit)...能做的很好,但它不存在。

执行GET而不是POST不是一种选择,因为标准很复杂。

2 个答案:

答案 0 :(得分:0)

那么,

我遇到同样的问题,我使用plain函数解决它,它返回一个简单的对象数组。但它将删除所有Restangular辅助函数。所以,你无法使用它。

代码段:

Restangular.one('client').post('list',JSON.stringify({
                offset: offset,
                length: length
            })).then(
            function(data) {
                $scope.clients = data.plain();
            },
            function(data) {
              //error handling
            }
        );

答案 1 :(得分:0)

您可以通过在配置块中为OnElemRestangularized设置自定义处理程序来获取POST以返回正确的重新集合化的集合。在对象进行Restangularized之后调用此处理程序。传入isCollection以显示对象是否被视为集合或单个元素。在下面的代码中,如果对象是一个数组,但未被视为集合,则将其作为集合再次进行重新分类。这会将所有的restangular处理程序添加到数组中的每个元素。

   let onElemR = (changedElem, isCollection, route, Restangular: restangular.IService) => {
  if (Array.isArray(changedElem) && !isCollection ) {
    return Restangular.restangularizeCollection(null, changedElem, changedElem.route);
  }
  return changedElem;
};
RestangularProvider.setOnElemRestangularized(onElemR);