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());
