ANÚNCIO

~/questoes/programacao

Em uma aplicação Express, em qual ordem as middlewares e rotas devem ser declaradas no app.js?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência Correção do app.js. Ordem correta de chamada do app.use(routes) #nodejs #js #api #rest #dev
Para fixar

A Ordem Correta de Middlewares e Rotas no Express

Conceito central

No Express, as requisições são processadas sequencialmente de cima para baixo no arquivo app.js. A ordem de declaração das middlewares e rotas é crítica: middlewares globais vêm primeiro, depois as rotas da aplicação, e por fim o tratador de erros global.

Por que essa resposta faz sentido

A alternativa D está correta porque respeita o fluxo natural de processamento do Express. Middlewares globais precisam executar primeiro para preparar os dados da requisição, as rotas vêm depois para processar requisições específicas, e o tratador de erros vem por último para capturar qualquer problema que ocorra no caminho.

Armadilhas comuns

  • Colocar app.use(routes) antes das middlewares de autenticação, fazendo com que rotas protegidas não funcionem corretamente.
  • Posicionar o tratador de erros global antes das rotas, causando erros lançados pelas rotas não serem capturados.
  • Ignorar que middlewares customizadas só protegem rotas declaradas depois delas, não as anteriores.

Entenda as alternativas

A

Ordem importa muito no Express. Se você colocar o tratador de erros antes das rotas, ele nunca vai capturar erros lançados por elas. Se colocar middlewares de autenticação depois das rotas, essas rotas não terão acesso ao usuário autenticado.

B

Colocar o tratador de erros no começo é um erro grave. O tratador de erros global deve vir por último, porque precisa estar pronto para capturar falhas das rotas. Se vir primeiro, as rotas declaradas depois dele nunca chegarão até ele em caso de erro.

C

Colocar rotas primeiro faz com que elas executem antes das middlewares essenciais. Imagine uma rota protegida que precisa de validação JWT: se a middleware de autenticação vir depois da rota, a rota não vai conseguir acessar o usuário autenticado.

D

Esta é a ordem correta e segue o padrão industial. Middlewares globais (body-parser, cors, autenticação) executam primeiro para preparar a requisição. Depois vêm as rotas, que encontram os dados já processados. Por fim, o tratador de erros captura qualquer problema que ocorra.

Dica prática: Use este template mental ao estruturar seu app.js: 1º Middlewares globais (body-parser, cors, etc), 2º app.use(routes), 3º Tratador de erros. Se uma middleware precisa proteger uma rota, coloque a middleware acima da rota.

Revise pensando: Se você declarar uma middleware de autenticação depois de app.use(routes), o que vai acontecer com as rotas protegidas?