Como receber dados no corpo da requisição (body) no Express.js?

No Express.js, o middleware express.json() permite capturar e processar dados enviados no corpo da requisição em formato JSON.

Como receber dados no corpo da requisição (body) no Express.js?

No Express.js, os dados enviados no corpo da requisição (body) são essenciais para operações como criação de usuários, envio de formulários e atualizações de registros. Para capturá-los corretamente, precisamos utilizar um middleware adequado.

1. Configurando o middleware express.json()

Por padrão, o Express.js não interpreta automaticamente o corpo das requisições. Precisamos ativar o middleware express.json() para processar JSON:

const express = require('express');
const app = express();

app.use(express.json());

app.post('/usuarios', (req, res) => {
    const { nome, email } = req.body;
    res.json({ mensagem: 'Usuário criado!', nome, email });
});

app.listen(3000, () => console.log('Servidor rodando na porta 3000'));

Agora, se enviarmos um POST para http://localhost:3000/usuarios com o seguinte JSON:

{
    "nome": "João",
    "email": "joao@email.com"
}

A resposta será:

{
    "mensagem": "Usuário criado!",
    "nome": "João",
    "email": "joao@email.com"
}

2. Capturando body em formato URL-Encoded

Se a requisição vier de um formulário HTML, podemos ativar o middleware express.urlencoded():

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

Isso permite processar dados enviados como application/x-www-form-urlencoded.

3. Tratando dados ausentes no body

Antes de processar os dados, é sempre uma boa prática validar a entrada:

app.post('/produtos', (req, res) => {
    const { nome, preco } = req.body;
    if (!nome || !preco) {
        return res.status(400).json({ erro: 'Nome e preço são obrigatórios!' });
    }
    res.json({ mensagem: 'Produto cadastrado', nome, preco });
});

Agora, se enviarmos uma requisição sem o campo preco, a API responderá com um erro:

{
    "erro": "Nome e preço são obrigatórios!"
}

Conclusão

Capturar dados do body no Express.js é essencial para manipular informações enviadas pelos clientes. O uso correto dos middlewares express.json() e express.urlencoded() garante que os dados sejam processados corretamente, evitando erros e melhorando a segurança da aplicação.

No desenvolvimento de APIs RESTful, processar corretamente os dados do corpo da requisição é fundamental. Diferentes aplicações enviam dados de maneiras variadas: JSON, formulários URL-Encoded ou até mesmo multipart/form-data para uploads de arquivos.

O Express.js facilita essa captura com seus middlewares nativos, garantindo que as informações cheguem ao servidor corretamente formatadas. Frameworks como NestJS e Fastify aprimoram esse conceito, adicionando camadas de validação e otimização para processamento de dados.

Algumas aplicações:

  • Criação de usuários via API
  • Envio de formulários de contato
  • Atualização de perfis em aplicativos
  • Processamento de pedidos de compra
  • Manipulação de configurações enviadas pelo cliente

Dicas para quem está começando

  • Sempre ative express.json() para processar JSON corretamente.
  • Use express.urlencoded({ extended: true }) para processar formulários.
  • Valide os dados recebidos antes de processá-los.
  • Teste requisições POST com ferramentas como Postman ou Insomnia.
  • Se for trabalhar com upload de arquivos, utilize a biblioteca multer.

Contribuições de Henrique Almeida

Compartilhe este tutorial: Como receber dados no corpo da requisição (body) no Express.js?

Compartilhe este tutorial

Continue aprendendo:

Como usar query params no Express.js?

Os query params no Express.js permitem que clientes passem informações na URL para filtrar e personalizar requisições.

Tutorial anterior

Como usar o CORS no Node.js e Express.js?

O CORS (Cross-Origin Resource Sharing) no Express.js permite que APIs sejam acessadas por aplicações hospedadas em domínios diferentes.

Próximo tutorial