Сохранение ответа API в сеансе

#javascript #api #express #nunjucks

#javascript #API #экспресс #nunjucks

Вопрос:

При публикации страницы я пытаюсь ПОЛУЧИТЬ информацию из API, вернуть выходные данные и сохранить результаты, чтобы их можно было использовать на всех страницах. Метод, в котором вызывается API, не самый лучший, но это просто для проверки концепции, а не качества производства. Итак, вот код на данный момент:

 router.post('/page-one/', function (req, res) {
  var options = {
    'method': 'GET',
    'url': 'https://api.information.service.com/company/<value>',
    'headers': {
      'Authorization': 'Basic <key>'
    }
  }
  request(options, function (error, response) {
    if (error) throw new Error(error)
    console.log(response.body)
  })
  res.redirect('/page-two/')
})
 

Итак, это работает нормально, консоль возвращает правильную информацию. Как бы я тогда взял это и использовал на всех страницах? Скажем, на странице 2 мой get:

 router.get('/page-two/', function (req, res) {
  res.render('/page-two/', {

  })
})
 

Я использую Express, Express Session, Express Writer и Nunjucks.

Комментарии:

1. Я не знаю, знаете ли вы, но вы сразу перенаправляете на /page-two/ перед получением response.body . Конечно, вы должны дождаться response.body , затем сохранить его где-нибудь (переменная сеанса и т. Д.), А затем перенаправить на /page-two/

2. @JeremyThille Спасибо, да, я это заметил, нужно также внести эту корректировку. На данный момент я застрял на том, как сохранить ответ. тело в качестве переменной сеанса, а затем возвращает эту переменную на другой странице

3. Создайте помощник, который будет вызывать api для извлечения данных в /page-two маршрут … вызовите этот помощник в /page-one / и /page-two/ . если это строковые данные, чем использовать session . если это данные объекта, то вы можете использовать req.locals .