Rotas e Middlewares no Express.js:
No Express.js, as rotas são responsáveis por definir como a aplicação responde a solicitações HTTP específicas.
Os middlewares, por outro lado, são funções que têm acesso tanto à solicitação quanto à resposta e podem executar ações antes que a resposta final seja enviada.
Exemplo de Rotas:
Considere um aplicativo de tarefas simples. Aqui estão exemplos de rotas básicas usando Express.js:
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;
// Rota para obter todas as tarefas
app.get('/tasks', (req, res) => {
// Lógica para obter e enviar todas as tarefas
res.send('Listando todas as tarefas');
});
// Rota para obter uma tarefa específica
app.get('/tasks/:taskId', (req, res) => {
const taskId = req.params.taskId;
// Lógica para obter e enviar a tarefa com taskId
res.send(`Detalhes da tarefa ${taskId}`);
});
// Rota para criar uma nova tarefa
app.post('/tasks', (req, res) => {
// Lógica para criar uma nova tarefa
res.send('Criando uma nova tarefa');
});
// Rota para atualizar uma tarefa existente
app.put('/tasks/:taskId', (req, res) => {
const taskId = req.params.taskId;
// Lógica para atualizar a tarefa com taskId
res.send(`Atualizando a tarefa ${taskId}`);
});
// Rota para excluir uma tarefa
app.delete('/tasks/:taskId', (req, res) => {
const taskId = req.params.taskId;
// Lógica para excluir a tarefa com taskId
res.send(`Excluindo a tarefa ${taskId}`);
});
app.listen(PORT, () => {
console.log(`Servidor rodando na porta ${PORT}`);
});
Neste exemplo, criamos rotas para listar todas as tarefas, obter detalhes de uma tarefa específica, criar uma nova tarefa, atualizar uma tarefa existente e excluir uma tarefa.
Exemplo de Middlewares:
Os middlewares são funções que têm acesso ao objeto de solicitação (req
), ao objeto de resposta (res
), e à próxima função de middleware no ciclo de solicitação-resposta do Express. Eles podem ser utilizados para realizar tarefas como autenticação, validação de dados, tratamento de erros, entre outros.
// Middleware para autenticação simples
const authenticate = (req, res, next) => {
const authToken = req.headers.authorization;
if (!authToken) {
return res.status(401).send('Token de autenticação não fornecido');
}
// Lógica de autenticação aqui (verificação de token, por exemplo)
next(); // Chama o próximo middleware na pilha
};
// Middleware para log de solicitações
const logRequest = (req, res, next) => {
console.log(`[${new Date().toLocaleString()}] ${req.method} ${req.url}`);
next();
};
// Uso de middlewares em rotas específicas
app.use(logRequest); // Aplica o middleware de log a todas as rotas
app.get('/tasks', authenticate, (req, res) => {
// Lógica para obter e enviar todas as tarefas
res.send('Listando todas as tarefas');
});
app.listen(PORT, () => {
console.log(`Servidor rodando na porta ${PORT}`);
});
Neste exemplo, criamos dois middlewares. O primeiro, authenticate
, verifica a presença de um token de autenticação. O segundo, logRequest
, registra informações sobre cada solicitação no console. Ambos são utilizados em rotas específicas.
Esses são conceitos fundamentais para criar aplicações robustas e flexíveis com Express.js.
Outros utilizações dos Middlewares