Hola usuario de nuestra página web, tenemos la respuesta a tu interrogante, has scroll y la encontrarás aquí.
Solución:
Aunque no hay un sistema de filtro de middleware integrado en expressjs, puede lograrlo al menos de dos maneras.
El primer método es montar todos los middlewares que desea omitir en una ruta de expresión regular que incluye una búsqueda negativa:
// Skip all middleware except rateLimiter and proxy when route is /example_route
app.use(//((?!example_route).)*/, app_lookup);
app.use(//((?!example_route).)*/, timestamp_validator);
app.use(//((?!example_route).)*/, request_body);
app.use(//((?!example_route).)*/, checksum_validator);
app.use(rateLimiter);
app.use(//((?!example_route).)*/, whitelist);
app.use(proxy);
El segundo método, probablemente más legible y limpio, es envolver su middleware con una pequeña función de ayuda:
var unless = function(path, middleware)
return function(req, res, next)
if (path === req.path)
return next();
else
return middleware(req, res, next);
;
;
app.use(unless('/example_route', app_lookup));
app.use(unless('/example_route', timestamp_validator));
app.use(unless('/example_route', request_body));
app.use(unless('/example_route', checksum_validator));
app.use(rateLimiter);
app.use(unless('/example_route', whitelist));
app.use(proxy);
Si necesita una coincidencia de ruta más potente que la simple path === req.path
puede usar el módulo path-to-regexp que Express usa internamente.
ACTUALIZAR: – En express 4.17
req.path
devuelve solo ‘/’, así que use req.baseUrl
:
var unless = function(path, middleware)
return function(req, res, next)
if (path === req.baseUrl)
return next();
else
return middleware(req, res, next);
;
;
Basado en la respuesta de @lukaszfiszer, ya que quería que se excluyera más de una ruta. Puedes agregar tantos como quieras aquí.
var unless = function(middleware, ...paths)
return function(req, res, next)
const pathCheck = paths.some(path => path === req.path);
pathCheck ? next() : middleware(req, res, next);
;
;
app.use(unless(redirectPage, "/user/login", "/user/register"));
No se puede agregar como comentario lo siento.
También puede omitir una ruta como esta poniendo una condición en req.originalUrl:
app.use(function (req, res, next) {
if (req.originalUrl === '/api/login')
return next();
else
//DO SOMETHING
Tienes la opción de estimular nuestro cometido poniendo un comentario y puntuándolo te lo agradecemos.