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

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

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

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

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

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

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

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

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

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

npm install body-parser

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

import bodyParser from 'body-parser';

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

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

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

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

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