过滤缓存的 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 调用:
- /api/articles
- /api/articles?linkname=some_article
- /api/articles/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 调用?
感谢您的帮助。
有没有我现在没有看到的缺点?
取决于您的应用程序的功能如何。如果它需要实时数据,则需要执行 REST 调用以获取最新数据。
正确的方法是什么?我的做法合法吗,尽量少REST-calls?
还要看。如果需要,您可以探索推送数据通知,这样当来自服务器的数据发生更改或修改时,您可以将这些信息推送到您的客户端。这样,REST 操作就会根据您定义的条件发生。
我正在构建一个 Angular Shop-Frontend,它使用带有 Restangular 的 REST-API。
为了从 API 获取文章,我使用 Restangular.all("articles")
并设置 Restangular 来缓存此请求。
当我想从 API 获取一篇文章时,例如在文章详细信息页面上通过它的链接名然后在其他地方(在购物车摘要上)通过它的 id,我需要 3 REST 调用:
- /api/articles
- /api/articles?linkname=some_article
- /api/articles/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 调用?
感谢您的帮助。
有没有我现在没有看到的缺点?
取决于您的应用程序的功能如何。如果它需要实时数据,则需要执行 REST 调用以获取最新数据。
正确的方法是什么?我的做法合法吗,尽量少REST-calls?
还要看。如果需要,您可以探索推送数据通知,这样当来自服务器的数据发生更改或修改时,您可以将这些信息推送到您的客户端。这样,REST 操作就会根据您定义的条件发生。