O que são middlewares no Express.js e como usá-los?

Middlewares no Express.js são funções que processam requisições antes de chegarem à rota final, permitindo manipulação, autenticação e tratamento de erros.

O que são middlewares no Express.js e como usá-los?

No Express.js, os middlewares são funções que podem interceptar e modificar requisições e respostas antes que elas cheguem ao manipulador final da rota. Eles são essenciais para implementar autenticação, logging, manipulação de erros e muito mais.

Como funciona um middleware?

Um middleware recebe três parâmetros: req (requisição), res (resposta) e next (função para passar a requisição adiante).

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

const meuMiddleware = (req, res, next) => {
    console.log('Middleware executado!');
    next(); // Passa a requisição para o próximo middleware ou rota
};

app.use(meuMiddleware);

app.get('/', (req, res) => {
    res.send('Rota principal');
});

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

Tipos de middlewares no Express.js

  1. Middlewares de aplicação: Aplicados a todas as requisições usando app.use().
  2. Middlewares de rota: Aplicados a rotas específicas.
  3. Middlewares embutidos: Como express.json() para processar JSON.
  4. Middlewares de erro: Tratam erros na aplicação.

Exemplo de middleware para autenticação

const autenticar = (req, res, next) => {
    const token = req.headers['authorization'];
    if (!token) {
        return res.status(401).json({ erro: 'Acesso negado' });
    }
    next();
};

app.get('/protegido', autenticar, (req, res) => {
    res.json({ mensagem: 'Rota protegida acessada!' });
});

Tratamento de erros com middlewares

app.use((err, req, res, next) => {
    console.error(err.stack);
    res.status(500).json({ erro: 'Erro interno do servidor' });
});

Conclusão

Os middlewares no Express.js são fundamentais para estruturar uma API robusta, facilitando autenticação, manipulação de requisições e tratamento de erros. Usá-los corretamente melhora a organização e segurança do código.

O conceito de middlewares no Express.js revolucionou a maneira como APIs são estruturadas. Em vez de escrever código repetitivo em cada rota, podemos centralizar funcionalidades como autenticação, logs e compressão de dados em middlewares reutilizáveis.

Grandes frameworks como NestJS e AdonisJS se inspiram fortemente nessa abordagem. A separação lógica promovida pelos middlewares permite a criação de APIs escaláveis, modulares e mais fáceis de manter.

Algumas aplicações:

  • Autenticação e autorização
  • Registro de logs de requisições
  • Compressão de respostas
  • Manipulação de erros
  • Filtragem e validação de dados

Dicas para quem está começando

  • Use app.use() para middlewares globais.
  • Os middlewares devem sempre chamar next() para não bloquear a requisição.
  • Para middlewares de erro, defina quatro parâmetros (err, req, res, next).
  • Utilize express.json() para permitir envio de dados no formato JSON.
  • Teste seus middlewares em rotas antes de aplicá-los globalmente.
Foto de Henrique Almeida
Contribuições de
Henrique Almeida

Especialista em desenvolvimento backend usando Node.js e arquiteturas de microsserviços.

Mais sobre o autor
Compartilhe este tutorial: O que são middlewares no Express.js e como usá-los?

Compartilhe este tutorial

Continue aprendendo:

Como enviar respostas JSON em uma API Node.js?

No Express.js, podemos enviar respostas JSON para APIs usando o método res.json(), garantindo comunicação estruturada entre cliente e servidor.

Tutorial anterior

Como lidar com requisições GET e POST no Express.js?

No Express.js, as requisições GET e POST são usadas para recuperar e enviar dados, permitindo a comunicação entre cliente e servidor.

Próximo tutorial