Home > Web Front-end > JS Tutorial > Introduction to Express4.x middleware features (code example)

Introduction to Express4.x middleware features (code example)

不言
Release: 2019-03-16 10:57:45
forward
2283 people have browsed it

This article brings you an introduction to the Express4.x middleware features (code examples). It has certain reference value. Friends in need can refer to it. I hope it will be useful to you. Helps.

Express application is basically a series of middleware function calls. The middleware is executed in a pipeline. You can imagine a real pipe carrying water. Water is pumped in at one end and then passes through various gauges and valves before reaching its destination. An important part of this analogy is the order issue. The effect is different if you put the pressure gauge before the valve than after it. Likewise, if you have a valve that injects something into the water, everything "downstream" of the valve will contain this newly added ingredient. In an Express program, middleware is inserted into the pipeline by calling app.use.

Before Express 4.0, this pipeline was a bit complicated because the router had to be connected explicitly. Depending on where you connect to the router, the routing can come in out of order, which makes the order of the pipeline even less clear when you mix in middleware and route handlers. In Express 4.0, middleware and route handlers are called in the order they are connected, making the order clearer.

Route processors (app.get, app.post, etc., often collectively referred to as app.VERB) can be thought of as middleware that only handles specific HTTP verbs (GET, POST, etc.). Similarly, middleware can also be thought of as a route processor that can handle all HTTP verbs (basically equivalent to app.all, which can handle any HTTP verb; there will be subtle differences for special verbs such as PURGE, but for ordinary As far as predicates are concerned, the effect is the same).

The first parameter of the route processor must be a path. If you want a route to match all paths, just use /*. Middleware can also take a path as the first parameter, but it is optional (if this parameter is omitted, it will match all paths as if /* was specified)

Route processors and middleware There is a callback function in the parameters of the file. This function has 2, 3 or 4 parameters (technically it can also have 0 or 1 parameters, but these forms are meaningless). If there are 2 or 3 parameters, the first two parameters are the request and response objects, and the third parameter is the next function. If there are 4 parameters, it becomes an error handling middleware, and the first parameter becomes the error object, followed by the request, response, and next objects. If next() is not called, the pipeline will be terminated and there will be no further processing by processors or middleware.

If you do not call next(), you should send a response to the client (res.send, res.json, res.render, etc.); if you do not do this, the client will be hung and Eventually resulting in a timeout. If next() is called, it is generally not appropriate to send a response to the client. If you send it, subsequent middleware or route handlers in the pipeline will still execute, but any responses they send will be ignored.

var express = require('express')
var app = express()

var requestTime = function (req, res, next) {
  req.requestTime = Date.now()
  console.log(req.requestTime );
  next()
}
var requestUser = function (req, res, next) {
  console.log('welcome');
  next()
}

app.use(requestTime)
app.get('/', function (req, res) {
  console.log('//welcome');
  var responseText = 'Hello World!<br>'
  responseText += '<small>Requested at: ' + req.requestTime + '</small>'
  res.send(responseText)
})
app.use(requestUser)
app.listen(3000)
Copy after login

Access 127.0.0.1:3000 output time and //welcome will not execute requestUser middleware code 1552630945571//welcome

The above is the detailed content of Introduction to Express4.x middleware features (code example). For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:segmentfault.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template