使用bodyParser.urlencoded(
)中间件:
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
然后表单值将显示在req上.正文:
app.post('/game', function (req, res) {
res.render('the_template', { name: req.body.name });
});
设置{ extended: true }
允许bodyParser接受表单数据中类似json的数据,包括嵌套对象.e、 g.{ 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
-用于嵌套数据 struct
false
-用于名称-值对
json()
-适用于应用程序/json内容类型
请注意,form/multipart需要一个不同的主体解析器(例如multer)
Update: fix if you get ExpressJS Error about Body-Parser being Deprecated
代替
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