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)
})
您看到服务器正在侦听。
现在,您可以在本地主机上查看服务器生成的结果 http://127.0.0.1:8000
让我们看下一页: http://127.0.0.1: 8000/help
输出:
注意: 您会看到命令提示符未更改。意味着,尽管在 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)
})
您看到服务器正在侦听。
现在,您可以在本地主机上查看服务器生成的结果 http://127.0.0.1:8000
您可以看到输出是相同的,但是命令提示符显示的是GET结果。
转到 http://127.0.0.1:8000/help
重新加载页面的次数很多,命令提示符将被更新。
注意: 在上述示例中,使用next()中间件。
中间件示例说明
在上面的中间件示例中,新功能用于通过 app.use()对每个请求进行调用。
中间件是一个函数,就像路由处理程序一样,并且也以类似的方式调用。
您可以使用相同的API在上方或下方添加更多中间件。