我正在构建一个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调用?
感谢您的帮助。
答案 0 :(得分:0)
我现在还没有看到任何缺点吗?
取决于您的应用程序的功能。如果它需要实时数据,则需要执行REST调用以获取最新数据。
什么是正确的方法?我的方法是否合法,尽可能少地进行REST调用?
依然取决于。如果需要,您可以浏览推送数据通知,这样当您更改或修改来自服务器的数据时,您可以将这些信息推送到您的客户端。这样,REST操作就会根据您定义的条件发生。