O que é o app.use no NodeJS/ExpressJS?

Você já reparou que praticamente qualquer módulo que plugamos no Express atualmente é feito através do uso do app.use? Mas afinal, o que é o app.use?

Ps: você pode ver este material em vídeo também no fim do post 🙂

A partir da versão 4 do Express, a extensibilidade é realizada por meio do uso de middlewares. Middleware é um bloco de código que é executado em todas as requisições ou nas que respeitam um certo padrão. E é respeitado a ordem de adição de cada um deles.

Para adicionarmos um middleware em nosso app (ou router):

Alguns pontos importantes:

  • Este middleware será aplicado antes da execução de qualquer rota que vier depois dele;
  • Caso não adicionamos o next(), as rotas subsequentes nem serão executadas. Por isso, middleware é uma ótima forma de fazer controle de acesso a rotas.

Vamos analisar este outro exemplo:

Quando fizermos uma requisição para /, passaremos pelos 2 primeiros middlewares mas não pelo terceiro. O res.send (que envia a resposta ao browser) encerra a pilha de execução.

Já quando executamos qualquer outra url diferente de /, o terceiro middleware é executado. E como ele não tem next(), ele não deixa nada abaixo dele ser executado. Ou seja, neste exemplo, ele está ocultando a última rota.

Aplicando um middleware a um conjunto de URLs específicas

Veja o seguinte exemplo:

Repare que adicionamos um middleware passando uma URL base. Nestes casos, apenas se a URL iniciar, no exemplo, por /admin, o middleware será executado. Isso também é muito útil para autenticação e autorização.

Veja este material em vídeo

Não deixe de comentar e até a próxima!