Отправка формы методом POST в Express

Давайте теперь научимся отправлять формы методом POST. Для этого изменим тип отправки в атрибуте method:

form.hbs<form action="/target/" method="POST">
  <input name="test1">
  <input name="test2">
  <input type="submit">
</form>

Будем отдавать нашу форму при запросе главной страницы:

index.jsapp.get('/', function(req, res) {
  res.render('form');
});

Сама форма в нашем случае будет отправляться на другой адрес. Давайте напишем обработчик этого адреса. При этом, так как наша форма отправляется методом POST, то нам нужно написать обработчик не app.get, а app.post:

index.jsapp.post('/target/', function(req, res) {
  res.send('result');
});

Данные формы, отправленной методом POST, будут содержаться в теле запроса. To есть нам нужно прочитать req.body:

index.jsapp.post('/target/', function(req, res) {
  console.log(req.body); // так просто не будет работать
  res.send('result');
});

Данные формы, однако, так просто не попадут в req.body - там тупо будет пусто. Для поддержки работы нам нужно установить промежуточное ПО body-parser:

terminalnpm install body-parser

Подключим установленное ПО:

index.jsimport bodyParser from 'body-parser';

Используем его для обработки всех форм:

index.jsapp.use(bodyParser.urlencoded({extended: true}));

И вот теперь после отправки в req.body будет содержаться объект с данными:

index.jsapp.post('/target/', function(req, res) {
  console.log(req.body); // объект с данными
  res.send('result');
});
Задание 1

Спросите у пользователя его имя, город и страну. Выведите полученные данные на странице.