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

使用Express/Node.js时Post请求无法抵达端点问题求助

问题:Express POST请求报错Cannot GET /post,GET请求正常

我编写了一段向服务器发送POST请求的简单代码,但访问端点时显示【Cannot GET /post】。不过发送GET请求时,服务器能正常返回消息"Ok",恳请帮忙找出我遗漏的配置。

我的代码

import express from 'express'
import bodyParser from 'body-parser'

const app = express();
app.use(bodyParser.urlencoded({ extended: true }));

app.post('/post', (req, res) => {
    console.log('Got body:', req.body);
    res.sendStatus(200);
});

app.listen(8080, () => console.log(`Started server at http://localhost:8080!`));

package.json文件截图

package.json文件截图

访问端点时收到的报错信息

报错信息截图


解决方案

1. 核心问题:请求方法不匹配

报错的直接原因是你用GET方式访问了仅配置POST的端点。比如直接在浏览器地址栏输入http://localhost:8080/post,浏览器默认发送GET请求,但你的代码只定义了app.post('/post')路由,所以服务器返回"Cannot GET /post"。

测试时必须确保用POST方法发送请求:

  • 用Postman、curl等工具选择POST方法测试
  • curl命令示例:
curl -X POST -d "key=value" http://localhost:8080/post

2. 简化中间件配置(可选但推荐)

Express 4.16.0+已经内置了body-parser的urlencoded和json解析功能,不需要额外安装body-parser包。可以把代码中的body-parser替换为:

const app = express();
// 替换body-parser,处理表单格式请求体
app.use(express.urlencoded({ extended: true }));
// 新增:处理JSON格式请求体(如果需要接收JSON数据)
app.use(express.json());

之后可以卸载body-parser包:

npm uninstall body-parser

3. 可选:添加GET路由(如果需要支持GET访问)

如果希望GET请求访问/post也能得到响应,可以补充GET路由:

app.get('/post', (req, res) => {
    res.send('Ok');
});

内容的提问来源于stack exchange,提问作者Muhammad Junaid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 02:25:14