В этой части учебника мы разберём как в Node.js и express делать POST запросы, и в целом их принимать, будет очень интересно.
Node.js и express POST запросы:
Для начала, давайте для примера создадим форму, чтобы наглядно было понятно как с этим работать.
Вот форма:
1 2 3 4 5 6 7 | <form action="/register" method="post"> <label>Имя</label><br> <input type="text" name="name" /><br><br> <label>Возраст</label><br> <input type="number" name="age" /><br><br> <input type="submit" value="Отправить" /> </form> |
Как видите, мы тут сделали форму для отправки POST запросов на наш сервер.
Дальше нам пригодиться одна библиотека для парсинга данных полученных от клиента, она называется body-parser, вот как её скачать:
1 | npm install body-parser |
После того как мы это сделали, переходим в наш js файл, в котором мы будем обрабатывать форму, и вот что мы пишем в нём:
1 2 3 4 5 6 7 8 9 10 11 12 13 | const bodyParser = require("body-parser"); // создаем парсер для данных application/x-www-form-urlencoded const urlencodedParser = bodyParser.urlencoded({extended: false}); app.get("/register", urlencodedParser, function (req, res) { res.sendFile(__dirname + "/register.html"); }); app.post("/register", urlencodedParser, function (req, res) { if(!req.body) return res.sendStatus(400); res.send(`${req.body.name} - ${req.body.age}`); }); |
Как видите в начале мы тут портируем библиотеку для парсинга, потом создаём этот парсинг, это будет Middleware, функция, дальше создаём проверку двух запросов, GET и POST.
GET запрос нужен для того, чтобы отправить файл с формой пользователю, и как видите мы ответом отправляем его.
В POST запросе мы сначала проверяем, есть ли значение req.body, именно в нём и храниться данные с которые мы отправили в запросе, если окажется что их нет, то отправляем ошибку 400, но если что-то есть, то отправляем то, что мы получили, это имя и возраст.
Таким образом у нас и работают POST запросы.
Но, если вы работаете с RestAPI, и отправляете на сервер JSON данные, то вам не обязательно использовать парсер, вам достаточно будет получить данные из req.body.
Вот не большой пример этого:
1 2 3 4 | app.post("/register", function (req, res) { if(!request.body) return response.sendStatus(400); response.json({name: request.body.name, age: request.body.age}); }); |
Как видите, теперь мы не используем парсер, всё потому что, данные и так в удобном формате для нас, и с ними нечего делать не надо, но теперь и данные клиенту мы отправляем в формате JSON, возможно в одной из будущих частей, мы об этом поговорим подробнее.
Вывод:
В этой части учебника мы поговорили как в Node.js и Express работают POST запросы, думаю вам было интересно и полезно, она получилась короткой, но это потому-что тема простая.