Apostrophe CMS: есть ли у нас middleware / hook, который может устанавливать global.data из API? - PullRequest
0 голосов
/ 23 октября 2018

Мое требование: у меня есть API, который будет предоставлять пользовательские данные.В Apostrophe CMS мне нужно получить доступ к пользовательским данным из всех макетов (Header, Main, Footer).

Я вижу gobal.data, который доступен везде в шаблоне.Точно так же мне нужен хук, который будет вызывать API и сохранять данные ответов в global.data апострофа.

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

1 Ответ

0 голосов
/ 25 октября 2018

Вы можете использовать этот API на каждой странице рендеринга:

// index.js of some apostrophe module

// You should `npm install request-promise` first
const request = require('request-promise');

module.exports = {
  construct: function(self, options) {
    self.on('apostrophe-pages:beforeSend', async function(req) {
      const apiInfo = await request('http://some-api.com/something');
      req.data.apiInfo = apiInfo;
      // now in your templates you can access `data.apiInfo`
    });
  }
}

Но это будет работать с этим API при каждом отдельном запросе, что, конечно, замедлит работу вашего сайта.Поэтому я бы рекомендовал вам кешировать информацию в течение некоторого периода времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...