Ответ 1
Используйте промежуточное ПО 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. Отказ от определения расширенного параметра (т.е. Использования параметра по умолчанию), по-видимому, является устаревшим, и они, похоже, хотят, чтобы вы решили, нужны ли вам вложенные параметры или пары значений простого имени.
Если вы хотите иметь возможность анализировать данные формы для некоторых маршрутов и данные JSON для других на вашем экспресс-сервере, вы можете использовать:
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: <true|false> }))
urlencoded()
для типа содержимого x-www-form-urlencoded
-
true
- для вложенных структур данных -
false
- для пар имя-значение
json()
- для типа содержимого приложения /json
Обратите внимание, что для формы /multipart требуется другой анализатор тела (например, multer)