Фильтрация кэшированных REST-данных против нескольких REST-вызовов

0

Я создаю Angular Shop-Frontend, который потребляет REST-API с помощью Restangular.

Чтобы получить статьи из API, я использую Restangular.all("articles") и я настраиваю Restangular для кэширования этого запроса.

Когда я хочу получить одну статью из API, например, на странице с подробными сведениями по ее ссылке и позже в другом месте (в сводке корзины) по этому идентификатору мне понадобится 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-вызовов?

Спасибо за вашу помощь.

Теги:
rest
restangular

1 ответ

0
Лучший ответ

Есть ли недостатки, которые я не вижу прямо сейчас?

Зависит от того, как функциональность вашего приложения. Если для этого требуются данные в реальном времени, то требование REST, выполняемое для получения последних данных, является требованием.

Каким будет правильный путь? Является ли мой подход законным, чтобы иметь как можно меньше REST-вызовов?

Зависит все еще. Если вы хотите, вы можете изучить push-уведомления о данных, так что, когда ваши данные с сервера будут изменены или изменены, вы можете нажать эту информацию на своего клиента. Таким образом, операции REST происходят на основе условий, которые вы определили.

  • 0
    Спасибо за Ваш ответ. Поскольку данные в реальном времени не требуются в этом приложении, я останусь с моим подходом. На решающих этапах (например, при оформлении заказа) я все еще могу проверить свои данные на актуальность моего повторного вызова REST-интерфейсов. Также спасибо за ваш совет относительно push-уведомлений о данных ... собираюсь проверить это

Ещё вопросы

Сообщество Overcoder
Наверх
Меню