Отправка формы методом 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');
});
Спросите у пользователя его имя, город и страну. Выведите полученные данные на странице.