使用bodyParser.urlencoded() 中间件:
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
然后表单值将在 req.body 上:
app.post('/game', function (req, res) {
res.render('the_template', { name: req.body.name });
});
设置{ extended: true } 允许bodyParser 接受表单数据中的json 类数据,包括嵌套对象。例如{ person: { name: Adam } } 使用 javascript 发送,而不是传统 HTML 表单发送的名称值对。如果不需要,可以将扩展值设置为 false。不定义扩展选项(即使用默认设置)显然已被弃用,他们似乎希望您决定是否需要嵌套选项或纯名称值对。
如果您希望能够在 express 服务器中解析某些路由的表单数据和其他路由的 json 数据,您可以使用:
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: <true|false> }))
urlencoded() 用于 x-www-form-urlencoded 内容类型
-
true - 用于嵌套数据结构
-
false - 用于名称值对
json() - 用于应用程序/json 内容类型
注意form/multipart需要不同的body解析器(比如multer)
更新:修复 ExpressJS 关于 Body-Parser 被弃用的错误
替换
app.use(bodyparser.json()); //utilizes the body-parser package
app.use(bodyParser.urlencoded({extended: true}));
由
app.use(express.json()); // Used to parse JSON bodies
app.use(express.urlencoded()); //Parse URL-encoded bodies