Express.js 中间件

Express.js中间件

什么是中间件?

中间件是一种可以访问请求和响应对象的功能,也可以next在应用程序的请求-响应周期中使用该功能。

在本教程中,我们将学习如何在Node.js Express应用程序中定义中间件函数,以及如何调用中间件函数。

中间件术语

request –是客户端发出HTTP请求(例如PUT,GET等)时到达Express应用程序的HTTP请求。它包含诸如查询字符串,url参数,标头等属性。

response–对象表示Express应用程序在收到HTTP请求时发送的HTTP响应。

next – next用于继续中间件堆栈中的下一个中间件。

request-response cycle请求-响应周期) –从请求打入Express应用程序开始,直到响应离开该应用程序以进行请求为止执行的操作周期。

中间件堆栈–在请求-响应周期中执行的中间件功能堆栈。

定义中间件功能

正如我们在中间件功能的定义中已经提到的那样,它可以访问请求,响应对象和下一个功能。

语法与JavaScript函数的语法相同。它接受请求,响应对象和下一个函数作为参数。

 
 function logger(req, res, next) { 
    
 }

 这里logger是函数名称,req是HTTP请求对象,res是节点响应对象,next是请求-响应周期中的下一个函数。

您可以访问request对象的所有属性和方法req。

同样,您可以访问response object的所有属性和方法res。

next()中间件函数内部的调用函数是可选的。如果使用next()语句,则在请求-响应周期中继续执行下一个中间件功能。如果您不调用next()函数,则给定请求的执行将在此处停止。

function logger(req, res, next) { 
    // 您的代码
    next() // 调用中间件堆栈中的下一个函数
 }

调用中间件

在Express应用程序中,您可以使用应用程序对象上的use函数来调用中间件。

var express = require('express') 
var app = express() 
 
function logger(req, res, next) { 
   // 您的代码
   next() 
 } 
 
app.use(logger)

Express.js中间件示例

在此示例中,我们将定义一个名为logger的中间件,该中间件将当前时间和查询字符串记录到控制台。

app.js

var express = require('express') 
var app = express() 
 
// 定义中间件功能
function logger(req, res, next) { 
   console.log(new Date(), req.url) 
   next() 
 } 
 
// 在每个请求-响应周期中调用logger:middleware
app.use(logger) 
 
// 为路径“ /”执行的路由
app.get('/', function (req, res) { 
   res.send('This is a basic Example for Express.js by nhooo') 
 }) 
 
// 启动服务器
var server = app.listen(8000, function(){ 
    console.log('Listening on port 8000...') 
 })

启动此应用程序,然后在浏览器中单击以下URL。

  • http://localhost:8000/

  • http://localhost:8000/hello-page/

输出将是

对于监听8000的应用程序的每个请求,我们都附加了一个中间件功能。对于url http://localhost:8000/,URL为/ ,因此logger的输出为当前时间和'/'。对于url同样如此'/hello-page/'。