Voltar ao início

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