Node.js服务GET请求耗时过长 Postman访问本地接口无返回无报错
问题排查与修复方案
根本原因
Express 路由处理逻辑中未主动返回响应,导致 Postman 一直等待服务端返回内容,进入无限加载状态。你仅在终端打印了第三方接口返回的数据,没有将数据回传给请求方。
其他需要修复的问题
- 第三方请求 URL 缺少
http://或https://协议头,node-fetch 无法正常发起请求 console.errror拼写错误,正确写法为console.errorapi_key赋值未加引号,会直接抛出变量未定义的语法错误- 没有对异常场景做响应处理,第三方接口报错时请求方同样收不到任何返回
修复后完整代码
const express = require('express'); const app = express(); const fetch = require('node-fetch'); require('dotenv').config(); // 若使用dotenv管理密钥,建议替换为 const api_key = process.env.API_KEY const api_key = "XXXXXXXXXXX" app.use(express.static('public')); app.listen(9001, () => console.log('listening at 9001')); app.get("/api", async (req,res)=> { console.log("getting data") // 补全URL协议头 const url = `https://website.com/vi/api/?alt=json&key=${api_key}` const options = { method: "GET" }; try { const fetchRes = await fetch(url, options) const result = await fetchRes.json() console.log(result) // 核心:返回响应给请求方 res.json(result) } catch (e) { console.error({ message: "oh no", error: e }); // 错误场景返回异常响应 res.status(500).json({ message: "接口请求失败", error: e.message }) } });
验证步骤
重启 Node 服务后,再次通过 Postman 请求 localhost:9001/api 即可正常拿到返回内容。
内容的提问来源于stack exchange,提问作者Rudolph Musngi
相关产品推荐
相关产品推荐

