Chapter 10. Middleware
By now, we’ve already had some exposure to middleware: we’ve used
existing middleware (body-parser, cookie-parser, static, and
express-session, to name a few), and we’ve even written some of our own
(for adding weather data to our template context, configuring flash
messages, and our 404 handler). But what is middleware, exactly?
Conceptually, middleware is a way to encapsulate functionality—specifically, functionality that operates on an HTTP request to your
application. Practically, middleware is
simply a function that takes three arguments: a request object, a response
object, and a next() function, which will be explained shortly. (There is
also a form that takes four arguments, for error handling, which will be
covered at the end of this chapter.)
Middleware is executed in what’s known as a pipeline.
You can imagine a physical pipe, carrying water. The water gets pumped in
at one end, and then there are gauges and valves before the water gets
where it’s going. The important part about this analogy is that order
matters; if you put a pressure gauge before a valve, it has a different
effect than if you put the pressure gauge after the valve. Similarly, if
you have a valve that injects something into the water, everything
“downstream” from that valve will contain the added ingredient. In an
Express app, you insert middleware into the pipeline by calling
app.use.
Prior to Express 4.0, the pipeline was complicated by your having to link in the router explicitly. ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access