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