ANÚNCIO

~/questoes/programacao

Qual é o resultado direto de chamar app.use() com um middleware ou router?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência Curso de Node JS Aula 13 Usar Router e finalizar projeto
Para fixar

A Ordem Crítica do app.use() no Express

Conceito central

O app.use() registra middlewares globalmente para processar todas as requisições que chegam ao servidor, mas a ordem de declaração é crucial. Middlewares são executados sequencialmente, e colocar um middleware depois de uma rota significa que ele não conseguirá processar aquela requisição.

Por que essa resposta faz sentido

Quando você chama app.use() com um middleware, ele fica ativo para todas as requisições subsequentes, processadas na ordem exata em que foram declaradas. Isso significa que se o express.json() vier depois das rotas, as rotas não conseguirão ler o corpo JSON das requisições POST e PUT.

Armadilhas comuns

  • Pensar que app.use() registra o middleware apenas para a próxima requisição, quando na verdade ele fica ativo permanentemente.
  • Colocar app.use(express.json()) depois das rotas e não entender por que os dados POST e PUT não chegam aos controllers.
  • Achar que a ordem dos middlewares não importa, quando na realidade ela determina como cada requisição será processada.

Entenda as alternativas

A

O middleware não executa apenas uma vez. Ele permanece registrado e processa cada requisição que chega ao servidor durante toda a execução da aplicação.

B

Exatamente isso. O middleware fica registrado globalmente e processa todas as requisições na sequência em que foi declarado com app.use(). A ordem importa porque cada requisição passa por todos os middlewares nessa ordem.

C

O middleware não é descartado após uma requisição. Ele permanece na memória e em ativo durante toda a execução do servidor, processando todas as requisições futuras.

D

O middleware não afeta apenas imports posteriores do arquivo. Ele processa requisições HTTP reais de todos os clientes que chegam ao servidor, independente de quando o código foi importado.

Dica prática: Sempre coloque o app.use(express.json()) antes das rotas. Uma regra prática: configure todos os middlewares globais primeiro, depois registre as rotas. Use o Insomnia ou Postman para testar uma requisição POST e veja o que acontece quando a ordem está errada.

Revise pensando: Se você colocar app.use(express.json()) depois de app.use(routes), o que acontece com uma requisição POST que envia dados em JSON?