node.js - tutorial - server graphql
Diferencia entre app.use() y router.use() en Express (3)
Estaba leyendo la documentación en express y encontré estos dos términos,
app.use();
y
router.use();
Sé
app.use();
se usa en el nodo para
montar un middleware
en una ruta, y a menudo lo usamos en la mayoría de las aplicaciones de nodo.
pero que es
router.use();
son los dos iguales?
si no, ¿cuál es la diferencia?
Leí sobre el enrutador here . También encontré preguntas similares sobre SO ¿Cuál es la diferencia entre "express.Router" y el enrutamiento usando "app.get"? y la diferencia entre app.all (''*'') y app.use (''/'') , pero en realidad no responden mi pregunta. Gracias.
app.use () utilizado para montar la función o funciones de middleware en la ruta especificada, la función de middleware se ejecuta cuando la base de la ruta solicitada coincide con la ruta.
router.use () se utiliza para la función o funciones de middleware. La ruta de montaje predeterminada es "/".
Pero en app.use () tendrá que dar una ruta específica como esa:
var adsRouter = require(''./adsRouter.js'');
app.use(''/ads'', adsRouter);
o
app.use(''/ads'', function(req, res, next) {
// write your callback code here.
});
Pero mientras usa router.use () solo puede proporcionar middleware, como este:
router.use(function(req, res, next) {
console.log(''%s %s %s'', req.method, req.url, req.path);
next();
});
o
router.use(''/test'', function(req, res, next) {
// write your callback code here.
next();
});
o
//in router.js
router.use(''/admin'', authUtil.verifySessionId, authUtil.verifyLisencee);
router.post(''/admin'', controllerIndex.ads.adListingAdmin);
En el código anterior, cuando el punto final es ''/ admin'', primero llamará a authUtil.verifySessionId y authUtil.verifyLisencee, luego ejecutará la siguiente línea con el punto final ''admin'' y de acuerdo con el método controllerIndex.ads.adListingAdmin.
router.get
es solo para definir subrutas.
Considere este ejemplo:
var router = express.Router();
app.use(''/first'', router); // Mount the router as middleware at path /first
router.get(''/sud'', smaller);
router.get(''/user'', bigger);
-
Si abre
/ first / sud
, se llamará a la función
smaller
. -
Si abre
/ first / user
, se llamará a la función
bigger
.
En resumen,
app.use(''/first'', router)
monta el middleware en la ruta
/ first
, luego
router.get
establece la ruta
router.get
consecuencia.
Pero si en cambio usamos lo siguiente:
app.use(''/first'', fun);
app.get(''/sud'', bigger);
app.get(''/user'', smaller);
-
Si abre
/ primero
en su navegador, se llamará
fun
, -
Para
/ sud
,
bigger
se llamará - Para / user , se llamará a small
Pero recuerde para / first / sud , no se llamará a ninguna función.
Este enlace también puede ayudar: here
router.use();
monta el middleware para las rutas servidas por el enrutador específico,
app.use();
monta el middleware para todas las rutas de la aplicación (o las que coinciden con las rutas especificadas si usa
app.use(''/ANYROUTESHERE'', yourMiddleware());
).
Un caso de uso de ejemplo podría ser una aplicación con un enrutador con rutas estándar y un enrutador que maneja rutas api, que necesitan un usuario válido.
Luego montaría el middleware de autenticación para el enrutador api solo con
router.use(yourAuthMiddleware());
.
Si desea tener una aplicación que requiere un usuario válido para todas las rutas, monte el middleware para la aplicación con
app.use(yourAuthMiddleware());