Anche se non esiste un sistema di filtro middleware incorporato in expressjs, è possibile ottenere questo in almeno due modi.
primo metodo è quello di montare tutti i middleware che si desidera passare a un percorso di espressione regolare che include una ricerca negativo:
// 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);
Secondo metodo, probabilmente più leggibile e più pulito, è quello di avvolgere il vostro middleware con una piccola funzione di supporto:
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);
Se avete bisogno di route corrispondente più potente della semplice path === req.path
è possibile utilizzare path-to-regexp module che viene utilizzato internamente da espresso.
È possibile l'utente 'express-unless' npm per questo scopo. –