Node.js › Express & Middleware
What is the difference between application-level, router-level, and route-specific middleware in Express?
IntermediateAnswer
Application-level middleware (app.use()) applies to every request reaching the app (or matching a specified path prefix). Router-level middleware works the same way but is scoped to a specific express.Router() instance, letting a group of related routes (like everything under /api/v1/users) share middleware without affecting the rest of the app. Route-specific middleware is passed as an additional argument directly to a specific route definition, applying only to that single route.
// Application-level: every request
app.use(loggingMiddleware);
// Router-level: scoped to this router's routes only
const userRouter = express.Router();
userRouter.use(requireAuth);
userRouter.get('/profile', getProfileHandler);
app.use('/users', userRouter);
// Route-specific: applies only to this one route
app.post('/upload', uploadMiddleware, uploadHandler);Real-world example An API structures its authentication requirement at the router level for an entire /admin router (protecting every admin route automatically), while applying a specific file-size-limiting middleware only to the single /upload route that actually needs it.