Requisições POST e Envio de Formulários - Node.js
Ao enviar dados complexos, normalmente são utilizadas formulários. Vamos ver como receber dados enviados no Express.
Primeiro, definimos um novo arquivo index.html
<!DOCTYPE html>
<html>
<head>
<title>Registro</title>
<meta charset="utf-8" />
</head>
<body>
<h1>Digite seus dados</h1>
<form method="post">
<label>Nome</label><br>
<input type="text" name="userName" /><br><br>
<label>Idade</label><br>
<input type="number" name="userAge" /><br><br>
<input type="submit" value="Enviar" />
</form>
</body>
</html>
Aqui, definimos dois campos para entrada de nome e idade do usuário.
No arquivo app.js
const express = require("express");
const app = express();
// criando um parser para dados application/x-www-form-urlencoded
const urlencodedParser = express.urlencoded({extended: false});
app.get("/", function (_, response) {
response.sendFile(__dirname + "/index.html");
});
app.post("/", urlencodedParser, function (request, response) {
if (!request.body) return response.sendStatus(400);
console.log(request.body);
response.send(`${request.body.userName} - ${request.body.userAge}`);
});
app.listen(3000, () => console.log("Servidor iniciado em http://localhost:3000"));
Primeiramente, para receber os dados enviados, é necessário criar um parser:
const urlencodedParser = express.urlencoded({extended: false});
Como os dados são enviados por meio de um formulário, utilizamos a função urlencoded()
extended: false
Ao acessar o endereço /
index.html
Como os dados são enviados pelo método POST, definimos a função app.post("/",...)
/
/
/
app.post("/", urlencodedParser, function (request, response) {
if (!request.body) return response.sendStatus(400);
console.log(request.body);
response.send(`${request.body.userName} - ${request.body.userAge}`);
});
Para obter os dados enviados, utilizamos expressões como request.body.userName
request.body
userName
<input type="text" name="userName" />
Execute a aplicação e acesse a página index.html

Após o envio, os dados inseridos serão recebidos na função app.post("/",...)
