search
HomeWeb Front-endJS TutorialIntroduction to Express4.x middleware features (code example)

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)

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!

Statement
This article is reproduced at:segmentfault. If there is any infringement, please contact admin@php.cn delete
Vercel是什么?怎么部署Node服务?Vercel是什么?怎么部署Node服务?May 07, 2022 pm 09:34 PM

Vercel是什么?本篇文章带大家了解一下Vercel,并介绍一下在Vercel中部署 Node 服务的方法,希望对大家有所帮助!

node.js gm是什么node.js gm是什么Jul 12, 2022 pm 06:28 PM

gm是基于node.js的图片处理插件,它封装了图片处理工具GraphicsMagick(GM)和ImageMagick(IM),可使用spawn的方式调用。gm插件不是node默认安装的,需执行“npm install gm -S”进行安装才可使用。

一文解析package.json和package-lock.json一文解析package.json和package-lock.jsonSep 01, 2022 pm 08:02 PM

本篇文章带大家详解package.json和package-lock.json文件,希望对大家有所帮助!

怎么使用pkg将Node.js项目打包为可执行文件?怎么使用pkg将Node.js项目打包为可执行文件?Jul 26, 2022 pm 07:33 PM

如何用pkg打包nodejs可执行文件?下面本篇文章给大家介绍一下使用pkg将Node.js项目打包为可执行文件的方法,希望对大家有所帮助!

分享一个Nodejs web框架:Fastify分享一个Nodejs web框架:FastifyAug 04, 2022 pm 09:23 PM

本篇文章给大家分享一个Nodejs web框架:Fastify,简单介绍一下Fastify支持的特性、Fastify支持的插件以及Fastify的使用方法,希望对大家有所帮助!

node爬取数据实例:聊聊怎么抓取小说章节node爬取数据实例:聊聊怎么抓取小说章节May 02, 2022 am 10:00 AM

node怎么爬取数据?下面本篇文章给大家分享一个node爬虫实例,聊聊利用node抓取小说章节的方法,希望对大家有所帮助!

手把手带你使用Node.js和adb开发一个手机备份小工具手把手带你使用Node.js和adb开发一个手机备份小工具Apr 14, 2022 pm 09:06 PM

本篇文章给大家分享一个Node实战,介绍一下使用Node.js和adb怎么开发一个手机备份小工具,希望对大家有所帮助!

图文详解node.js如何构建web服务器图文详解node.js如何构建web服务器Aug 08, 2022 am 10:27 AM

先介绍node.js的安装,再介绍使用node.js构建一个简单的web服务器,最后通过一个简单的示例,演示网页与服务器之间的数据交互的实现。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools