NodeJS Express Middleware
Middleware
Express Guide
Do something in the middle.(request)
- Execute any code
- Make changes to the request and the response objects
- End the request-response cycle
- Call the next middleware in the stack
In my opinion, middleware is similar with Java Servlet Filter.
Middlware dones not end the request, must call next()
Type
- Application-level middleware
- Router-level middleware
- Built-in middleware
- Third-party middleware
Application level
var app = express(); app.use(function(req, res, next) { // every requests console.log("Hello"); next(); }); // app.use(method); app.use('/user/:id', function(req, res, next) { console.log('Request Type:', req.method); }); /* Applied middlware above app.get('/user/:id', function(req, res, next) { res.send('USER'); } */
Router level middleware
var app = express(); var router = express.Router(); router.use(function(req, res, next) { console.log('Time: ', Date.now()); next(); }); router.use('/user:id', function(req, res, next) { console.log('Request URL:', req.originalUrl); next(); }, function(req, res, next) { }); // mount the router on the app app.use('/', router);
Series middleware
app.use('/user/:id', function(req, res,next) { // 1 next(); }, function(req, res, next) { // 2 next(); // sub-stack }
Built-in
express.static : static assets
Style : express.static(root, [options]);
app.use(express.static(path.join(__dirname, 'public')));
Third-party middleware
List
Example : cookie-parser
var express = require('express'); var app = express(); var cookieParser = require('cookie-parser'); // load the cookie parsing middleware app.use(cookieParser());