Я создаю Angular Shop-Frontend, который потребляет REST-API с помощью Restangular.
Чтобы получить статьи из API, я использую Restangular.all("articles")
и я настраиваю Restangular для кэширования этого запроса.
Когда я хочу получить одну статью из API, например, на странице с подробными сведениями по ее ссылке и позже в другом месте (в сводке корзины) по этому идентификатору мне понадобится 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-вызовов?
Зависит все еще. Если вы хотите, вы можете изучить push-уведомления о данных, так что, когда ваши данные с сервера будут изменены или изменены, вы можете нажать эту информацию на своего клиента. Таким образом, операции REST происходят на основе условий, которые вы определили.