हालांकि एक्सप्रेसज में कोई बिल्ड-इन मिडलवेयर फ़िल्टर सिस्टम नहीं है, आप इसे कम से कम दो तरीकों से प्राप्त कर सकते हैं।
सबसे पहले विधि सभी middlewares कि आप एक नियमित अभिव्यक्ति पथ के लिए छोड़ना चाहते माउंट करने के लिए की तुलना में एक नकारात्मक देखने भी शामिल है:
// 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);
दूसरी विधि, शायद अधिक पठनीय और क्लीनर एक, के साथ अपने मिडलवेयर रैप करने के लिए है एक छोटा सा सहायक समारोह:
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);
आप सरल path === req.path
की तुलना में अधिक शक्तिशाली मार्ग मिलान की जरूरत है आप path-to-regexp module है कि एक्सप्रेस द्वारा आंतरिक रूप से प्रयोग किया जाता है का उपयोग कर सकते हैं।
आप इस उद्देश्य के लिए उपयोगकर्ता को 'व्यक्त-रहित' एनपीएम कर सकते हैं। –