ExpressJS - 中间件

中间件函数是可以访问请求对象(req)响应对象(res)以及应用程序请求 - 响应中的下一个中间件函数的函数周期.这些函数用于修改 req res 对象,用于解析请求体,添加响应头等任务.

这是一个简单的中间件功能实例 :

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

//Simple request time logger
app.use(function(req, res, next){
   console.log("A new request received at " + Date.now());
   
   //This function call is very important. It tells that more processing is
   //required for the current request and is in the next middleware
   function/route handler.
   next();
});

app.listen(3000);

为服务器上的每个请求调用上述中间件.因此,在每次请求后,我们将在控制台中收到以下消息 :

A new request received at 1467267512545

要将其限制为特定路线(及其所有子路线),请将该路线作为 app.use()的第一个参数.例如,

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

//Middleware function to log request protocol
app.use('/things', function(req, res, next){
   console.log("A request for things received at " + Date.now());
   next();
});

// Route handler that sends the response
app.get('/things', function(req, res){
   res.send('Things');
});

app.listen(3000);

现在每当您请求'/things'的任何子路由时,只会记录时间.

订单中间件调用

Express中间件最重要的一点是它们在文件中写入/包含的顺序;它们的执行顺序,因为路由匹配也需要考虑.

例如,在下面的代码片段中,第一个函数首先执行,然后是路由处理程序和然后是结束功能.此示例总结了如何在路由处理程序之前和之后使用中间件;还有一个路由处理程序如何用作中间件本身.

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

//First middleware before response is sent
app.use(function(req, res, next){
   console.log("Start");
   next();
});

//Route handler
app.get('/', function(req, res, next){
   res.send("Middle");
   next();
});

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

app.listen(3000);

当我们在运行此代码后访问'/'时,我们会收到 Middle 和我们的控制台上的回复 :

Start
End

下图总结了我们的内容了解中间件和减号;

中间件

现在我们已经介绍了如何要创建我们自己的中间件,让我们讨论一些最常用的社区创建的中间件.

第三方中间件

第三方中间件列表对于Express,可以使用此处.以下是一些最常用的中间件;我们还将学习如何使用/mount这些 :

body-parser

这用于解析附加了有效负载的请求体给他们.要安装body解析器,我们需要使用 npm install --save body-parser安装它并安装它,在index.js : 中包含以下行;

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

//To parse URL encoded data
app.use(bodyParser.urlencoded({ extended: false }))

//To parse json data
app.use(bodyParser.json())

要查看正文解析器的所有可用选项,请访问其github页面.

cookie-parser

它解析 Cookie 标头并使用由cookie名称键入的对象填充req.cookies.要挂载cookie解析器,我们需要使用npm install --save cookie-parser安装它并挂载它,在index.js : 中包含以下行;

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

express-session

它创建一个会话中间件给定的选项.我们将在Sessions部分讨论它的用法.

我们在ExpressJS中有许多其他第三方中间件.但是,我们在这里只讨论了几个重要的问题.