Node.js 节点快速路由中的HTTPS请求
我试图在node express中的路由中获取https请求的结果,但失败的原因是:connect ETIMEOUT。知道我错在哪里吗Node.js 节点快速路由中的HTTPS请求,node.js,express,routes,http-get,Node.js,Express,Routes,Http Get,我试图在node express中的路由中获取https请求的结果,但失败的原因是:connect ETIMEOUT。知道我错在哪里吗 router.get("/", async (req, res) => { try { result = await https.get('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY'); console.log(result); res.send(result);
router.get("/", async (req, res) => {
try {
result = await https.get('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY');
console.log(result);
res.send(result);
}
catch (err) {
console.log(err);
}
});
编辑:
URL是有效的,粘贴到浏览器中时会返回一些内容
我的API中的其他端点工作正常,但它们没有http请求思想。它们看起来像这样,即:
router.get("/", (req, res) => {
try {
res.sendFile("\\\\abc.local\\a$\\b$\\xyz\\001-005-877.pdf");
}
catch (err) {
res.status(500).json({ err: err.toString() });
}
});
编辑:
完成时:
我的index.js/routing(app.use(“/test”,require(“/routes/test”))中有一个输入错误,导致超时。
然后使用以下代码:
router.get("/", (req, res) => {
request('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY', function (error, response, body) {
console.log('error:', error);
console.log('statusCode:', response && response.statusCode);
console.log('body:', body);
})
});
我使用了“请求”模块。正如Dijkstra所建议的,尽管他的代码(用于快速默认http请求)对我不起作用,但他仍然提供了解决问题所需的一切,所以谢谢。我相信这不是
https.get()
的工作方式。文档是
可能的实施:
router.get("/", async (req, res) => {
https.get('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY', (result) => {
console.log('statusCode:', res.statusCode);
console.log('headers:', res.headers);
const data = '';
result.on('data', function (chunk) {
body += chunk;
});
result.on('end', () => {
res.send(JSON.parse(data));
});
}).on('error', (e) => {
console.error(e);
});
});
执行这种典型任务的代码相当复杂。这就是为什么有流行的包来处理幕后所有复杂部分的原因。我更喜欢使用。该URL是否返回数据??尝试在浏览器或邮递员中点击相同的URL,看看它是否返回任何内容!是的,URL有效并且确实返回数据。尝试请求package我尝试了你的代码,但仍然超时。谢谢你,我会再次阅读文档并安装request。我会在request中尝试并报告。request也是如此……我做错了什么?我相信你的api端点有问题。其他端点在我的api中工作正常,但它们没有http但是请求。路由中有一个错误,这就是为什么其他路由有效而此路由无效的原因。它仍然没有按预期工作,但至少我现在有一些工作要做。谢谢您的帮助。