Middleware
The heart of an Express application
Express is a routing and middleware web framework that has minimal functionality of its own
An Express application is essentially a series of middleware function calls.
Middleware functions are functions that have access to the request object (req), the response object (res), and the next middleware function in the application’s request-response cycle.
Middleware functions can perform the following tasks:
- Execute any code.
- Make changes to the request and the response objects.
- End the request-response cycle.
- Call the next middleware function in the stack.
// Here is an example of a simple “Hello World” Express
// application, for which you will define two middleware functions:
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(3000);
The following figure shows the elements of a middleware function call:
An Express application can use the following types of middleware:
- Application-level middleware
- Router-level middleware
- Error-handling middleware
- Built-in middleware
- Third-party middleware
Application-level middleware
// This example shows a middleware function with no mount path.
// The function is executed every time the app receives a request.
var app = express();
app.use(function (req, res, next) {
console.log('Time:', Date.now());
next();
});
continued...
// This example shows a middleware function mounted
// on the /user/:id path. The function is executed for
// any type of HTTP request on the /user/:id path.
app.use('/user/:id', function (req, res, next) {
console.log('Request Type:', req.method);
next();
});
// This example shows a route and its handler
// function (middleware system). The function
// handles GET requests to the /user/:id path.
app.get('/user/:id', function (req, res, next) {
res.send('USER');
});
Router-level middleware
Router-level middleware works in the same way as application-level middleware, except it is bound to an instance of express.Router().
var router = express.Router();
var express = require('express');
var app = express();
var router = express.Router();
// mount the router on the app
app.use('/', router);
// a middleware function with no mount path.
// This code is executed for every request to the router
router.use(function (req, res, next) {
console.log('Time:', Date.now());
next();
});
app.get('/', function(req, res) {
res.send('hello world');
});
app.listen(3000, function() {
console.log('Example app listening on port 3000');
})
Good article for advanced routing...
Error-handling middleware
// Error-handling middleware always takes
// four arguments (err, req, res, next))
app.use(function(err, req, res, next) {
console.error(err.stack);
res.status(500).send('Something broke!');
});
Define error-handling middleware functions in the same way as other middleware functions.
Built-in middleware
// Error-handling middleware always takes
// four arguments (err, req, res, next))
app.use(function(err, req, res, next) {
console.error(err.stack);
res.status(500).send('Something broke!');
});
Define error-handling middleware functions in the same way as other middleware functions.
List of Built-in Middleware
Third-party middleware
// Install the Node.js module for the required
// functionality, then load it in your app at
// the application level or at the router level.
var express = require('express');
var app = express();
var cookieParser = require('cookie-parser');
// load the cookie-parsing middleware
app.use(cookieParser());
Use third-party middleware to add functionality to Express apps
Security
helmet is a 3rd party middleware that sets response headers
jwt authentication
Resources
Express middleware docs
http://expressjs.com/resources/middleware.html
List of built-in middleware
https://github.com/senchalabs/connect?_ga=1.77493207.337430027.1449182896#middleware
Partial list of third-party middleware
Middleware
By Jason Sewell
Middleware
The heart of Express
- 1,425