Eu estava lendo a documentação do Express e encontrei esses dois termos, app.use();
erouter.use();
Eu sei que app.use();
é usado no nó para montar um middleware em um caminho e costumamos usá-lo na maioria dos aplicativos de nó. mas o que é router.use();
que ambos são iguais? se não, qual é a diferença?
Eu li sobre o roteador aqui . Também encontrei perguntas semelhantes no SO Qual é a diferença entre "express.Router" e roteamento usando "app.get"? e Diferença entre app.all ('*') e app.use ('/') , mas eles não respondem realmente à minha pergunta. Obrigado.
router
. Podemos fazer apenas porapp
. Isso é correto?router.use
mas esta resposta responde referindo-se arouter.get
?router.use();
monta o middleware para as rotas servidas pelo roteador específico,app.use();
monta o middleware para todas as rotas do aplicativo (ou aqueles que correspondem às rotas especificadas se você usarapp.use('/ANYROUTESHERE', yourMiddleware());
).O caso de uso de exemplo poderia ser um aplicativo com um roteador com rotas padrão e um roteador que lida com rotas de API, que precisam de um usuário válido.
Em seguida, você montaria o middleware de autenticação para o roteador api apenas com
router.use(yourAuthMiddleware());
.Se você tiver um aplicativo que requer um usuário válido para todas as rotas, monte o middleware para o aplicativo com
app.use(yourAuthMiddleware());
fonte
use
em outro roteador? Likerouter1.use('/path', router2);
app.use () usado para Montar a função ou funções de middleware no caminho especificado, a função de middleware é executada quando a base do caminho solicitado corresponde ao caminho.
router.use () é usado para funções ou funções de middleware, o caminho de montagem padrão para “/”.
Mas em app.use () você terá que fornecer um caminho especificado como este:
var adsRouter = require('./adsRouter.js'); app.use('/ads', adsRouter);
ou
app.use('/ads', function(req, res, next) { // write your callback code here. });
Mas enquanto usa router.use (), você pode fornecer apenas middleware, como este:
router.use(function(req, res, next) { console.log('%s %s %s', req.method, req.url, req.path); next(); });
ou
router.use('/test', function(req, res, next) { // write your callback code here. next(); });
ou
//in router.js router.use('/admin', authUtil.verifySessionId, authUtil.verifyLisencee); router.post('/admin', controllerIndex.ads.adListingAdmin);
No código acima, quando o ponto de extremidade é '/ admin', primeiro ele chamará authUtil.verifySessionId e authUtil.verifyLisencee e então executará a próxima linha com o ponto de extremidade 'admin' e de acordo com o método controllerIndex.ads.adListingAdmin.
fonte
app.use
se você quiser executar a função para cada solicitação feita ao aplicativo.