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

Express POST接收表单数据时req.body为空对象问题排查

问题根因

和你配置的express.urlencoded、body-parser中间件无关,问题出在表单代码上:

  • 标准表单提交时,只有配置了有效name属性的输入控件,才会被序列化后加入请求体
  • 你当前的两个输入框:第一个name属性值为空字符串,第二个完全没有写name属性,提交时不会携带任何表单字段,后端自然只能拿到空对象{}。
修复方案

给两个输入框添加对应业务含义的name属性即可,修改后的表单核心代码:

<form method="post" action="/new">
    <input placeholder="Insert your name here" type="text" name="user" id="">
    <input placeholder="Insert your message here" type="text" name="text">
    <button type="submit">Submit</button>
</form>

这里的name值直接对应了你路由里messages数组的字段名(user、text),后续你可以直接把提交的数据push到数组里,不需要额外做字段名映射。
修改后重启服务提交表单,req.body就能正常获取到提交的内容了。

排查提示:这类req.body为空的问题,如果已经确认urlencoded/json解析中间件配置正确、挂载顺序在路由之前,优先检查三点:表单控件有没有加有效name属性、前端发请求时有没有把参数正确放进请求体、请求头的Content-Type是否和使用的解析中间件匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:03:30