我正在关注有关美国航空航天局当天图片的http请求的文章。我正在尝试从服务器的浏览器中显示JSON对象。但是所有Node.js的示例都将api结果输出到服务器的控制台。是否可以让我的服务器将响应保存/转发给浏览器?我想在依赖任何依赖项之前了解本机http模块。另外,我不确定是否会有所作为,但我正在使用express创建服务器。因为我很困惑,所以任何事情甚至都可以帮助进行高级解释。
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()
})
已更新:代码正确
答案 0 :(得分:1)
您只希望在返回响应后发送它:
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()
})
还要确保您正确处理了错误。要么像上面的代码那样将响应发送回浏览器,然后将其传递给错误处理中间件。