过滤缓存的REST数据与多个REST调用

时间:2016-01-25 16:51:47

标签: angularjs rest restangular

我正在构建一个Angular Shop-Frontend,它使用Restangular的REST-API。

要从API获取文章,我使用Restangular.all("articles")并设置Restangular来缓存此请求。

当我想从API中获取一篇文章时,例如在文章详细信息页面上通过它的链接名称,以及稍后在其他地方(在购物车摘要中)通过它的ID,我会需要3个REST调用:

  • / API /制品
  • / API /物品?链接名称= some_article
  • / API /物品/ 5

但实际上,来自后两次调用的数据已经可以从缓存的第一次调用中获得。

所以我考虑使用缓存的文章并过滤它们来保存额外的REST调用。 我将这些函数构建到我的ArticleService中,它按预期工作:

function getOne(articleId) {
  var article = $q.defer();
  restangular.all("articles").getList().then(function(articles) {
    var filtered = $filter('filter')(wines, {id: articleId}, true);
    article.resolve((filtered.length == 1) ? filtered[0] : null);
  });
  return article.promise;
}

function getOneByLinkname(linkname) {
  var article = $q.defer();
  restangular.all("articles").getList().then(function(articles) {
    var filtered = $filter('filter')(articles, {linkname: linkname}, true);
    article.resolve((filtered.length == 1) ? filtered[0] : null);
  });
  return article.promise;
}

关于这种方法的问题:

我现在还没有看到任何缺点吗?什么是正确的方法去?我的方法是否合法,尽可能少地进行REST调用?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我现在还没有看到任何缺点吗?

取决于您的应用程序的功能。如果它需要实时数据,则需要执行REST调用以获取最新数据。

什么是正确的方法?我的方法是否合法,尽可能少地进行REST调用?

依然取决于。如果需要,您可以浏览推送数据通知,这样当您更改或修改来自服务器的数据时,您可以将这些信息推送到您的客户端。这样,REST操作就会根据您定义的条件发生。