Seu carrinho está vazio no momento!

Introdução (3 min)
Imagine um porteiro em um prédio. Ele verifica a identidade de todos que entram, decide quem pode passar e para onde devem ir. Em uma API, o middleware funciona de forma semelhante: intercepta as requisições antes que cheguem à sua lógica principal, permitindo executar ações importantes como autenticação, logging e validação.
Criar middlewares customizados é essencial para APIs modernas, pois possibilita adaptar o comportamento do servidor às suas necessidades específicas. Nesta aula, você aprenderá a construir seus próprios middlewares com Node.js e Express, implementando um middleware de logging que registra informações importantes de cada requisição.
No ecossistema Node.js/Express, os middlewares são a base para construir APIs robustas e flexíveis, adicionando funcionalidades transversais sem replicar código em diferentes rotas.
Conceito Fundamental (7 min)
Um middleware é uma função que recebe três parâmetros: a requisição (req), a resposta (res) e a próxima função na cadeia (next). Ele pode modificar a requisição e a resposta, ou passar o controle para o próximo middleware chamando next(). A ordem em que os middlewares são declarados define a ordem de execução.
Na indústria, middlewares são amplamente usados para autenticação, autorização, tratamento de erros, logging, compressão de dados e muito mais. Eles se integram perfeitamente com outras tecnologias, como bancos de dados, serviços de cache e provedores de identidade.
Uma das principais vantagens dos middlewares é a reutilização de código e a organização da aplicação. Por outro lado, um excesso de middlewares pode impactar negativamente o desempenho, tornando a depuração mais complexa.
Implementação Prática (10 min)
const express = require('express');
const app = express();
// Middleware de logging customizado
const meuLogger = (req, res, next) => {
const data = new Date();
console.log([${data.toISOString()}] ${req.method} ${req.url});
next(); // Passa o controle para o próximo middleware
};
// Aplica o middleware a todas as rotas
app.use(meuLogger);
// Rota de exemplo
app.get('/', (req, res) => {
res.send('Olá, Mundo!');
});
// Tratamento de erros genérico
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Algo deu errado!');
});
// Inicia o servidor na porta 3000 (compatível com HostGator Plano M)
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(Servidor rodando na porta ${port});
});
Este código demonstra um middleware de logging simples que registra a data, o método HTTP e a URL de cada requisição. A função next() é crucial para garantir que a requisição continue sendo processada. O tratamento de erros genérico garante a captura de exceções não tratadas, seguindo as melhores práticas enterprise.
Para HostGator Plano M, a configuração da porta utiliza process.env.PORT || 3000, garantindo compatibilidade com a plataforma.
Exercício Hands-On (5 min)
Desafio: Modifique o middleware de logging para registrar também o endereço IP do cliente (req.ip).
Solução:
const meuLogger = (req, res, next) => {
const data = new Date();
console.log([${data.toISOString()}] ${req.method} ${req.url} - IP: ${req.ip});
next();
};
Teste: Faça uma requisição para sua API e verifique o console. Você verá o endereço IP registrado junto com as outras informações.
Troubleshooting: Se o endereço IP não aparecer, verifique se você está atrás de um proxy ou balanceador de carga. Nestes casos, o endereço IP real pode estar em um cabeçalho diferente, como x-forwarded-for.
Próximos Passos: Explore outros tipos de middlewares, como autenticação com JWT, validação de dados com Joi e tratamento de CORS.
🚀 Pronto para a próxima aula?
Continue sua jornada no desenvolvimento de APIs e domine Node.js & Express!