Auch wenn es kein build-in-Middleware-Filtersystem in Express.js, können Sie diese in mindestens zwei Wegen erreichen.
Erste Methode ist es, alle Middle zu montieren, die Sie zu einem regulären Ausdruck Pfad überspringen wollen als einen negativen Nachschlag umfasst:
// 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);
Zweite Methode, wahrscheinlich besser lesbar und sauberere ein, ist Ihre Middleware wickeln mit eine kleine Hilfsfunktion:
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);
Wenn Sie mehr leistungsfähige Routenanpassung benötigen als einfache path === req.path
können Sie path-to-regexp module verwenden, die intern von Express verwendet wird.
Sie können zu diesem Zweck 'express-unless' npm verwenden. –