Почему я получаю пустые поля в объекте 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 все есть:
При отправке с веб-браузера - нет:
Ответы (1 шт):
Для того, чтобы получить поля из формы, которая передается в теле 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);