使用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¶m2=def¶m3=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
相关产品推荐
相关产品推荐

