本地Postman调用Express API的GET/POST请求均返回404错误
问题排查方案
1. 确认服务器路由与运行状态
- 修改
App.js添加POST路由后,必须重启Node服务器,否则新路由不会生效。 - 检查路由注册顺序:如果有全局404处理中间件(比如
app.use((req,res)=>res.sendStatus(404))),要确保它在app.post("/articles", ...)之后,否则会优先匹配404逻辑。 - 验证
/articles路由是否真的被加载:可以在app.post路由里先加一行console.log("POST /articles route hit"),重启服务器后看启动日志是否有异常,或者尝试访问一个肯定存在的测试路由(比如根路径)确认服务器正常运行。
2. 检查Postman请求细节
- 确认请求方法:顶部必须选对应方法(POST/GET),不要选错成PUT、DELETE等。
- 核对请求地址:确保是
http://localhost:4000/articles,没有拼写错误(比如少写s、端口误写为3000等),可以直接复制浏览器中能访问的根地址,再手动添加/articles后缀测试。 - 确认Body配置:选
x-www-form-urlencoded后,检查title和content的键值对是否正确填写,没有多余空格或特殊字符。
3. 必要中间件补充
虽然当前404是路由匹配问题,但后续要读取req.body,必须在所有路由之前添加URL编码解析中间件:
// 放在app.post路由之前 app.use(express.urlencoded({ extended: true }));
缺少这个中间件会导致req.body为undefined,但不会引发404错误。
4. 代理设置说明
保持Postman的USE SYSTEM PROXY关闭是正确的,localhost请求不需要通过系统代理,这个设置无需调整。
额外测试建议
在App.js中添加一个简易测试路由,验证服务器响应能力:
app.get("/test", (req, res) => { res.send("测试路由正常响应"); });
用Postman访问http://localhost:4000/test,如果能返回内容,说明服务器运行正常,问题集中在/articles路由的注册环节;如果仍返回404,说明服务器可能未在4000端口运行,或端口被其他程序占用。
内容的提问来源于stack exchange,提问作者ShaRaf
相关产品推荐
相关产品推荐

