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

如何在NodeJS POST接口中获取提交的表单值?

解决Express POST接口无法获取表单数据的问题

你的问题核心是Express默认没有配置解析表单请求体的中间件,导致req.body为undefined,自然拿不到label值。按下面步骤调整就能解决:

1. 添加表单解析中间件

在你的Express应用中,添加express.urlencoded中间件,它负责解析application/x-www-form-urlencoded类型的请求体(也就是Postman里的表单数据格式):

import express from "express";
const app = express();

// 关键:添加表单解析中间件
app.use(express.urlencoded({ extended: true }));

app.post('/api/projects/', async (req, res) => {
  const label = req.body.label;
  // 注意:send和status的顺序要调整,send会结束响应,应该先设置status再send
  res.status(201).send(label);
});

// 别忘了启动服务器
app.listen(3000, () => {
  console.log('Server running on port 3000');
});
  • extended: true表示使用qs库解析复杂的嵌套表单数据,如果你只需要简单键值对,设为false也可以,但推荐用true适配更多场景。
  • 另外代码里原有的res.send(label).status(201)顺序有误:send会立即发送响应并结束请求,后续的status不会生效,必须改成res.status(201).send(label)。

2. 检查Postman的请求配置

确保你在Postman里的设置正确:

  • 切换到Body标签页
  • 选择x-www-form-urlencoded选项
  • 添加键值对:key填label,value填TEST
  • 发送请求,就能收到返回的TEST了

如果之后需要处理JSON格式的请求,只需要再添加app.use(express.json())中间件即可,但当前场景用urlencoded就够了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 21:22:03