You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何GET请求正常,POST请求访问localhost:5000/api却返回404错误?

POST请求404但GET正常的排查与解决

核心原因

GET请求正常说明/api路径在后端已存在,但后端未配置该路径的POST请求处理逻辑,导致请求到达后无匹配路由,返回404。

排查步骤

  • 检查后端路由配置:确认后端框架(如Express)中是否为/api添加了POST路由处理。例如Express中,GET路由是app.get('/api', handler),必须对应添加app.post('/api', postHandler)才能处理POST请求。
  • 核对请求路径:确保前端POST的URL和后端配置完全一致,注意是否有斜杠差异(比如/api vs /api/)、大小写问题。
  • 查看后端日志:启动后端时开启请求日志,验证POST请求是否真的到达后端,排查是否有中间件(如CORS、路由前缀)拦截了请求。

用户提供的前端代码

const createPost = async () => {
    let res = await axios.post("http://localhost:5000/api", {"id" : 4, "name" : "this was posted by code :)"})
    console.log(res)
  }

  useEffect(() => {
    axios.get("http://localhost:5000/api").then(res => {
      setBackendData(res.data)
    }).catch(err => {
      console.log(err)
    })
  }, [])

后端修复示例(Express)

如果后端使用Express,需补充POST路由处理:

const express = require('express');
const app = express();
app.use(express.json()); // 解析JSON请求体

// 已有的GET路由
app.get('/api', (req, res) => {
  res.send('GET请求成功');
});

// 新增POST路由处理
app.post('/api', (req, res) => {
  const { id, name } = req.body;
  // 此处添加业务逻辑:比如存入数据库
  res.status(201).json({ message: '数据提交成功', data: req.body });
});

app.listen(5000, () => console.log('服务运行在5000端口'));

内容的提问来源于stack exchange,提问作者8iggy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 07:03:15