ExpressJS - 中间件(Middleware)

ExpressJS - 中间件(Middleware) 首页 / ExpressJS入门教程 / ExpressJS - 中间件(Middleware)

中间件(Middleware)函数是可以访问请求对象(request object),响应对象(response object)以及应用程序的请求(request)-响应(response)中的下一个中间件函数。这些函数用于修改 req 和 res 对象,以执行诸如解析请求正文(responst bodies),添加响应标头(response headers)等任务。

这是一个实际的中间件函数的简单示例-

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

//简单的请求中间件
app.use(function(req, res, next){
   console.log("A new request received at " + Date.now());
   
   //这个函数调用非常重要。它告诉更多的处理是当前请求需要,并且在下一个中间件中
   function/route handler.
   next();
});

app.listen(3000);

服务器上的每个请求都会调用上述中间件,因此,在每个请求之后,无涯教程将在控制台中收到以下消息:

无涯教程网

A new request received at 1467267512545

要将其限制为特定的路由,请将该路由作为 app.use() 的第一个参数提供。如,

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

//request请求协议的中间件函数
app.use('/things', function(req, res, next){
   console.log("A request for things received at " + Date.now());
   next();
});

//reponse响应的路由处理程序
app.get('/things', function(req, res){
   res.send('Things');
});

app.listen(3000);

现在,无论何时您请求"/things"的任何子路由,只有它才会记录时间。

调用顺序

Express中间件最重要的事情之一是它们在文件中的写入/包含顺序,考虑到路由匹配,还需要考虑它们的执行顺序。

如,在下面的代码片段中,第一个函数首先执行,然后执行路由处理程序,然后执行结束函数。这个示例总结了如何在路由之前和之后使用中间件。

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

//发送响应之前的第一个中间件
app.use(function(req, res, next){
   console.log("Start");
   next();
});

//路由处理程序
app.get('/', function(req, res, next){
   res.send("Middle");
   next();
});

app.use('/', function(req, res){
   console.log('End');
});

app.listen(3000);

在运行此代码后访问'/'时,在控制台上收到 Middle 的响应-

链接:https://www.learnfk.comhttps://www.learnfk.com/expressjs/expressjs-middleware.html

来源:LearnFk无涯教程网

Start
End

下图总结了无涯教程对中间件的了解-

Middleware

既然已经介绍了如何创建自己的中间件,那么讨论一些社区最常用的中间件。

第三方中间件

此处可获得Express的第三方中间件列表。以下是一些最常用的中间件还将学习如何 use/install 命令-

body-parser

这用于解析 request body。需要使用npm install --save body-parser进行安装它,在index.js中包括以下几行:

var bodyParser=require('body-parser');

//解析 URL 编码数据
app.use(bodyParser.urlencoded({ extended: false }))

//解析json数据
app.use(bodyParser.json())

要查看body-parser的所有可用选项,请访问其github页面。

cookie-parser

它解析Cookie header 和 req.cookie。需要使用npm install --save cookie-parser进行安装它,在index.js中包括以下几行:

var cookieParser=require('cookie-parser');
app.use(cookieParser())

express-session

它使用给定的选项创建 session middleware。将在"session"部分中讨论其用法。

ExpressJS中还有许多其他第三方中间件。但是,无涯教程在这里只讨论了一些重要的问题。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

深入浅出区块链 -〔陈浩〕

DDD实战课 -〔欧创新〕

分布式协议与算法实战 -〔韩健〕

互联网人的英语私教课 -〔陈亦峰〕

超级访谈:对话张雪峰 -〔张雪峰〕

郭东白的架构课 -〔郭东白〕

计算机基础实战课 -〔彭东〕

JavaScript进阶实战课 -〔石川〕

Python实战 · 从0到1搭建直播视频平台 -〔Barry〕

好记忆不如烂笔头。留下您的足迹吧 :)