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

Filter cached REST-Data vs multiple REST-calls

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

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

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

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

所以我考虑使用缓存的文章并过滤它们以保存额外的 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 调用?

感谢您的帮助。

有没有我现在没有看到的缺点?

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

正确的方法是什么?我的做法合法吗,尽量少REST-calls?

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