express接收表单post请求时request.body为空无法获取数据如何解决
问题原因与解决方案
为什么request.body为空
Express框架默认不会解析POST请求的请求体内容,你当前表单提交的Content-Type是application/x-www-form-urlencoded类型,没有配置对应的解析中间件的情况下,request.body就会是空对象{},自然取不到对应的表单字段值。
解决方法
- 第一步:在你的Express应用代码中,注册路由的代码之前,添加表单请求体解析中间件:
如果你的Express版本 >= 4.16.0(目前绝大多数版本都满足),直接使用框架自带的中间件即可:
// 写在所有路由定义之前 const express = require('express') const app = express() // 解析 application/x-www-form-urlencoded 类型的请求体(对应普通表单提交) app.use(express.urlencoded({ extended: true })) // 如果后续需要接收JSON格式的请求,可以再加这行 app.use(express.json())
如果你的Express版本低于4.16.0,需要先安装body-parser依赖再引入使用:
npm install body-parser
然后在代码中引入注册:
const bodyParser = require('body-parser') app.use(bodyParser.urlencoded({ extended: true })) app.use(bodyParser.json())
- 第二步:确认你的
/dbinsert路由注册代码,是在上述中间件注册之后执行的,如果路由写在中间件前面,中间件不会对该路由生效。 - 第三步:重新启动服务测试,此时
request.body就能正常拿到表单提交的字段,你可以直接通过request.body.wo_num、request.body.qty等获取对应输入框的值。
内容的提问来源于stack exchange,提问作者NicLovin
相关产品推荐
相关产品推荐

