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

使用Got库发送Node.js HTTP POST请求时req.body无法传递的问题

问题根源

你遇到的req.body为空的原因很明确:客户端发送的请求体虽然是application/x-www-form-urlencoded格式,但没有设置对应的Content-Type请求头。Express的express.urlencoded()中间件只会识别并解析Content-Type为application/x-www-form-urlencoded的请求,缺少这个头时,中间件会跳过解析步骤,导致req.body是空对象。

两种解决方案

方案1:手动添加Content-Type头

修改客户端的gotOptions,补充请求头配置:

let gotOptions = {
  method: "post",
  body: "param1=abc&param2=def&param3=geh",
  headers: {
    "Content-Type": "application/x-www-form-urlencoded"
  }
};

方案2:使用Got的form选项(更推荐)

Got内置了表单处理能力,直接传入表单对象即可自动生成正确格式的请求体并设置Content-Type,不用自己拼接字符串:

let gotOptions = {
  method: "post",
  form: {
    param1: "abc",
    param2: "def",
    param3: "geh"
  }
};

修改完成后,服务端就能正常打印出{ param1: 'abc', param2: 'def', param3: 'geh' }了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:01:19