Seu carrinho está vazio no momento!

Introdução (3 min)
Imagine um porteiro em um prédio. Ele verifica se você tem permissão para entrar (autenticação), se pode acessar o andar específico (autorização) e registra sua entrada (logging). Em uma API, o middleware funciona como esse porteiro, executando tarefas importantes antes que a requisição chegue ao seu destino final.
Este conceito é vital para APIs modernas, pois permite adicionar funcionalidades transversais, como segurança, logging e validação de dados, sem replicar código em cada rota. Nesta aula, você entenderá o que é middleware, como funciona e como implementá-lo em Node.js com Express.
Dentro do ecossistema Node.js/Express, middlewares são funções que têm acesso aos objetos de requisição (req), resposta (res) e à próxima função middleware na pilha (next).
Conceito Fundamental (7 min)
Middleware, em termos técnicos, é uma função que intercepta requisições HTTP em uma aplicação. Ele recebe os objetos req (requisição), res (resposta) e next (próxima função). A função req contém informações sobre a solicitação do cliente, como cabeçalhos, corpo e URL. A função res permite enviar a resposta de volta ao cliente. A função next é fundamental; chamá-la passa a execução para o próximo middleware na cadeia, ou para o handler da rota, se for o último middleware.
Em produção, middlewares são usados para autenticação (verificar a identidade do usuário), autorização (verificar as permissões do usuário), logging (registrar as atividades da API), tratamento de erros, compressão de dados e muito mais. Eles se integram com diversas tecnologias, como bancos de dados, caches e serviços externos.
A principal vantagem dos middlewares é a reutilização de código e a organização da aplicação. Como desvantagem, um middleware mal implementado pode afetar o desempenho da API.
Implementação Prática (10 min)
const express = require('express');
const app = express();
// Middleware para registrar o timestamp de cada requisição
const requestLogger = (req, res, next) => {
console.log(Requisição recebida em: ${new Date()});
next(); // Passa para o próximo middleware ou handler
};
// Middleware para verificar se o usuário está autenticado (exemplo simplificado)
const authMiddleware = (req, res, next) => {
const isAuthenticated = true; // Substitua por lógica de autenticação real
if (isAuthenticated) {
next();
} else {
res.status(401).send('Não autorizado');
}
};
// Rota que utiliza os middlewares
app.get('/protected', requestLogger, authMiddleware, (req, res) => {
res.send('Conteúdo protegido!');
});
// Rota que utiliza apenas o requestLogger
app.get('/public', requestLogger, (req, res) => {
res.send('Conteúdo público!');
});
// Middleware de tratamento de erros (SEMPRE no final)
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Erro interno do servidor!');
});
app.listen(3000, () => console.log('Servidor rodando na porta 3000'));
Este código demonstra dois middlewares: requestLogger registra o horário da requisição e authMiddleware simula uma autenticação. Note o uso de next() para passar a execução adiante. O middleware de erro captura e lida com exceções não tratadas. Este código é compatível com HostGator Plano M e segue boas práticas. Para testes, acesse /protected e /public no seu navegador.
Exercício Hands-On (5 min)
Crie um middleware que registra o método HTTP (GET, POST, etc.) da requisição no console. Utilize-o em uma nova rota /metodos.
Solução:
const methodLogger = (req, res, next) => {
console.log(Método HTTP: ${req.method});
next();
};
app.get('/metodos', methodLogger, (req, res) => {
res.send('Método registrado!');
});
Para testar, faça uma requisição GET para /metodos. O console exibirá o método utilizado. Para solucionar erros, verifique a sintaxe e a ordem dos middlewares.
Próximos passos: Explore middlewares de terceiros para funcionalidades como CORS, rate limiting e body parsing.
🚀 Pronto para a próxima aula?
Continue sua jornada no desenvolvimento de APIs e domine Node.js & Express!