Я следую статье о 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.info("Got a response: ", nasa_obj);
res.send(nasa_obj)
});
}).on('error', function (e) {
console.info("Got an error: ", e);
});
request.end()
})
ОБНОВЛЕНО: КОД ПРАВИЛЬНЫЙ
ах да, у меня это работает, теперь это имеет смысл, иногда масштаб может быть таким запутанным, ха-ха.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы хотите отправить ответ только после того, как он будет вам возвращен:
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.info("Got a response: ", body);
res.send(body);
});
}).on('error', function (e) {
console.info("Got an error: ", e);
next(e); // Pass error to error handling middleware
});
request.end()
})Также убедитесь, что вы правильно обрабатываете ошибки. Либо отправьте ответ браузеру, чтобы, как это делает приведенный выше код, передать его промежуточному программному обеспечению обработки ошибок.
У вас есть настоящий HTTP-сервер, работающий в вашем коде? Кроме того,
nasa_objне определено, покаres.on('end')не разрешится. Переместитеres.sendвверх к этому прослушивателю событий.