используя Node.js 'https.request () и вывод в браузер - PullRequest
0 голосов
/ 19 февраля 2019

Я слежу за статьей о http-запросах к рисунку НАСА за день.Я пытаюсь отобразить объект JSON в браузере с моего сервера.Но все примеры Node.js выводят результаты API в консоль сервера.можно ли на моем сервере сохранить / переслать ответ в браузер?Я хотел бы понять родной модуль http, прежде чем полагаться на какие-либо зависимости.Также я не уверен, если это имеет значение, но я использую экспресс для создания моего сервера.что-нибудь поможет даже высокоуровневому объяснению, потому что я так растерялся.

const https = require('https');

app.get('/', (req, res) => {
  var url = 'https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY';
  var nasa_obj
  var request = https.get(url, function (resp) {
    var body = '';

    resp.on('data', function (chunk) {
      body += chunk;
    });

    resp.on('end', function () {
      nasa_obj = JSON.parse(body);
      console.log("Got a response: ", nasa_obj);
      res.send(nasa_obj)
    });
  }).on('error', function (e) {
    console.log("Got an error: ", e);
  });
  request.end()
})

ОБНОВЛЕНО: КОД ПРАВИЛЬНЫЙ

1 Ответ

0 голосов
/ 19 февраля 2019

Вы хотите отправить ответ только после того, как он будет возвращен вам:

const https = require('https');

app.get('/', (req, res, next) => {
  var url = 'https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY';
  var nasa_obj
  var request = https.get(url, function (response) {
    var body = '';

    response.on('data', function (chunk) {
      body += chunk;
    });

    response.on('end', function () {
      console.log("Got a response: ", body);
      res.send(body);
    });
  }).on('error', function (e) {
    console.log("Got an error: ", e);
    next(e); // Pass error to error handling middleware
  });
  request.end()
})

Также убедитесь, что вы правильно обрабатываете ошибки.Либо отправьте ответ в браузер, чтобы, как и в приведенном выше коде, передать его промежуточному программному обеспечению для обработки ошибок.

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