POST-запросы и отправка форм¶
При оправке каких-то сложных данных обычно используются формы. Рассмотрим, как получать отправленные данные в Express.
Для получения данных форм из запроса необходимо использовать специальный пакет body-parser. Поэтому вначале добавим его в проект с помощью команды
1 |
|
Определим в папке проекта новый файл register.html
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
Здесь определены два поля для ввода имени и возраста пользователя. После нажатия на кнопку данные будут уходить по адресу /register
.
В файле app.js
определим следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
Прежде всего для получения отправленных данных необходимо создать парсер:
1 2 3 |
|
Поскольку данные отправляются с помощью формы, то для создания парсера применяется функция urlencoded()
. В эту функцию передается объект, устанавливающий параметры парсинга. Значение extended: false
указывает, что объект - результат парсинга будет представлять набор пар ключ-значение, а каждое значение может быть представлено в виде строки или массива.
При переходе по адресу /register
будет срабатывать метод app.get
, который отправит пользователю файл register.html
.
Так как данные отправляются с помощью метода POST
, то для обработки определяем функцию app.post("/register",...)
. Первый параметр функции - адрес, на который идет отправка - /register
. Стоит отметить, что в данном случае с одинм адресом /register
связаны две функции, только одна обрабатывает запросы get
, а другая - запросы post
. Второй параметр - выше созданный парсер. Третий параметр - обработчик:
1 2 3 4 5 6 7 8 9 10 |
|
Для получения самих отправленных данных используем выражения типа request.body.userName
, где request.body
инкапсулирует данные формы, а userName
- ключ данных, который соответствует значению атрибута name поля ввода на html-странице:
1 |
|
Запустим приложение и обратимся к странице register.html
:
После отправки введенные данные будут получены в функции app.post("/register",...)
, которая выведет результат обработки: