Expressjs教程

Express.js 中间件

Express.js中间件

Express.js中间件是Express.js路由层在最终请求处理程序之前调用的不同类型的功能。如所指定的名称,中间件出现在初始请求和最终预期路由之间的中间。在堆栈中,中间件功能始终按添加顺序调用。
中间件通常用于执行诸如URL编码或JSON请求的正文解析,用于基本cookie处理的cookie解析甚至是动态构建JavaScript模块之类的任务。

什么是中间件功能

中间件功能是在请求-响应周期中访问请求和响应对象(req,res)的功能。
中间件功能可以执行以下任务:
它可以执行任何代码。 它可以更改请求和响应对象。 它可以结束请求-响应周期。 它可以调用堆栈中的下一个中间件函数。

Express.js中间件

以下是Express.js应用中可能使用的中间件的列表:
应用程序级中间件 路由器级中间件 错误处理中间件 内置中间件 第三方中间件
让我们举一个例子来了解什么是中间件以及它是如何工作的。
让我们举一个最基本的Express.js应用程序:
文件: simple_express.js
var express = require('express');
var app = express();
app.get('/', function(req, res) {
  res.send('Welcome to lidihuo!');
});
app.get('/help', function(req, res) {
  res.send('How can I help You?');
});
var server = app.listen(8000, function () {
  var host = server.address().address
  var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
MiddleWare 1
您看到服务器正在侦听。
现在,您可以在本地主机上查看服务器生成的结果 http://127.0.0.1:8000
让我们看下一页: http://127.0.0.1: 8000/help
输出:
MiddleWare 3 MiddleWare 4
注意: 您会看到命令提示符未更改。意味着,尽管在 http://127.0.0.1:8000/help页面中处理了GET请求,但它没有显示GET请求的任何记录。

使用Express.js中间件

如果您希望每次收到请求时都进行记录,则可以使用中间件。
请参见以下示例:
文件: simple_middleware.js
var express = require('express');
var app = express();
app.use(function(req, res, next) {
  console.log('%s %s', req.method, req.url);
  next();
});
app.get('/', function(req, res, next) {
  res.send('Welcome to lidihuo!');
});
app.get('/help', function(req, res, next) {
  res.send('How can I help you?');
});
var server = app.listen(8000, function () {
  var host = server.address().address
  var port = server.address().port
  console.log("Example app listening at http://%s:%s", host, port)
})
MiddleWare 5
您看到服务器正在侦听。
现在,您可以在本地主机上查看服务器生成的结果 http://127.0.0.1:8000
您可以看到输出是相同的,但是命令提示符显示的是GET结果。
MiddleWare 7
转到 http://127.0.0.1:8000/help
MiddleWare 8 MiddleWare 9
重新加载页面的次数很多,命令提示符将被更新。
MiddleWare 10
注意: 在上述示例中,使用next()中间件。
中间件示例说明
在上面的中间件示例中,新功能用于通过 app.use()对每个请求进行调用。 中间件是一个函数,就像路由处理程序一样,并且也以类似的方式调用。 您可以使用相同的API在上方或下方添加更多中间件。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4