Почему я получаю пустые поля в объекте req при отправке формы с веб клиента?

Мое приложение Node JS + Express cо старницы клиента отправляет форму:

<form action='/api/register' method="POST">
<p>
    <label><h3>Добро пожаловать в hapPils. Придумай логин</h3>
    <input type='text' name="username" />
</p>
<p>
    <label><h3>Придумай пароль</h3></label><br>
    <input type="password" name="password" />
</p>
<input type="submit" value="Отправить" />
</form>

На стороне сервера я обрабатываю POSTзапрос и хочу получить данные из этих полей. Но получаю "undefined".

При тестировании через Postman все есть:

При тестировании через Postman все есть:

При отправке с веб-браузера - нет:

При отправке с веб-браузера  - нет:


Ответы (1 шт):

Автор решения: Roman C

Для того, чтобы получить поля из формы, которая передается в теле POST запроса, на сервере нужно установить body-parser, и с помощью него распарсить полученные данные, которые можно будет получить из req.body.

bodyParser.urlencoded([options]) Возвращает промежуточное ПО, которое анализирует только urlencoded-тела и просматривает только запросы, в которых заголовок Content-Type соответствует параметру type. Этот парсер принимает только кодировку UTF-8 тела и поддерживает автоматическую инфляцию кодировок gzip и deflate.

Новый объект body, содержащий проанализированные данные, заполняется в объекте запроса после промежуточного ПО (т. е. req.body). Этот объект будет содержать пары ключ-значение, где значение может быть строкой или массивом (когда extended равно false) или любым типом (когда extended равно true).


Вот примерно такой план действий

$ npm install --save body-parser

А затем в вашем приложении node:

const bodyParser = require('body-parser');
app.use(bodyParser);

Вы можете посмотреть полученные данные на сервере в консоли

console.dir(req.body);
→ Ссылка