Express服务器无法连接API端点 路由转发POST请求失败求助
问题修复方案
核心问题
- 路由挂载逻辑错误:
app.use()的第一个参数是本地Express服务的路由前缀,你错误填写了远程API的完整地址,导致本地没有对应路由入口,请求无法进入转发逻辑 - 变量作用域错误:主文件中定义的
options变量没有导出,路由文件中无法访问,实际运行会直接抛出未定义错误 - 转发请求参数缺失:没有将前端提交的请求方法、请求体、请求头传递给目标API,且目标API的请求地址没有拼接后续路由,请求路径和方法完全错误
- 目标请求路径错误:你要调用的目标接口是
https://rms.pythonanywhere.com/api/user/create,代码中只请求了前缀/api,没有拼接后续的/user/create路径
修复代码
主文件修改
只需要修改路由挂载的代码,无用的options变量可直接删除:
// 把原来的app.use(options.url, apiRouter);改成下面的代码即可 app.use('/api', apiRouter);
apiRouter文件完整代码
const express = require("express"); const apiRouter = express.Router(); const fetch = require("node-fetch"); // 统一配置目标API前缀 const TARGET_API_PREFIX = "https://rms.pythonanywhere.com/api"; apiRouter.post("/user/create", async function (req, res) { try { const fetch_res = await fetch(`${TARGET_API_PREFIX}/user/create`, { // 传递请求方法 method: "POST", // 传递请求头 headers: { "Content-Type": "application/json" }, // 传递前端提交的请求体 body: JSON.stringify(req.body) }); const json = await fetch_res.json(); res.json(json); } catch (err) { // 捕获错误避免服务崩溃 res.status(500).json({ code: 500, msg: "转发请求失败", error: err.message }); } }); // 后续其他接口也可以按照这个逻辑扩展,比如登录接口 apiRouter.post("/user/login", async function (req, res) { try { const fetch_res = await fetch(`${TARGET_API_PREFIX}/user/login`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(req.body) }); const json = await fetch_res.json(); res.json(json); } catch (err) { res.status(500).json({ code: 500, msg: "转发请求失败", error: err.message }); } }); module.exports = apiRouter;
测试方式
前端注册表单的提交地址改成你本地Express服务的/api/user/create即可,请求会自动转发到目标API并返回结果。
内容的提问来源于stack exchange,提问作者O.smith Effizzy's Tech
相关产品推荐
相关产品推荐

