English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Middleware ist eine Funktion, die auf die Anfrage- und Antwortobjekte zugreifen kann und auch next in der Anfrage des Anwendungs-diese Funktion im Antwortzyklus verwendet.
In diesem Tutorial werden wir lernen, wie man Middleware-Funktionen in einer Node.js Express-Anwendung definiert und wie man Middleware-Funktionen aufruft.
Anfrage – es ist die HTTP-Anfrage, die beim Senden einer HTTP-Anfrage (z.B. PUT, GET) durch den Client in die Express-Anwendung erreicht. Es enthält Attribute wie Query-String, URL-Parameter, Header und so weiter.
Antwort– das Objekt stellt die HTTP-Antwort dar, die von der Express-Anwendung gesendet wird, wenn sie eine HTTP-Anfrage erhält.
next – next wird verwendet, um zur nächsten Middleware im Middleware-Stapel überzugehen.
Anfrage-Antwortzyklus(Anfrage-Antwortperiode) – von dem Moment an, wo die Anfrage in die Express-Anwendung eindringt, bis die Antwort die Anwendung verlässt, um die Anfrage abzuschließen, wird der Operationsschleifenzyklus ausgeführt.
Middleware-Stapel– bei der Anfrage-Middleware-Funktionshaufen, die während der Antwortperiode ausgeführt werden.
Wie bereits in der Definition der Middleware-Funktion erwähnt, kann sie auf die Anfrage, das Antwortobjekt und die nächste Funktion zugreifen.
Die Syntax ist identisch mit der Syntax von JavaScript-Funktionen. Sie akzeptiert Anfrage, Antwortobjekt und die nächste Funktion als Parameter.
function logger(req, res, next) { }
Hier ist 'logger' der Funktionsname, 'req' das HTTP-Anfrageobjekt, 'res' das Knoten-Antwortobjekt und 'next' die Anfrage.-响应周期中的下一个函数。
您可以访问request object的所有属性和方法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)
在此示例中,我们将定义一个名为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 w3codebox') ) // 启动服务器 var server = app.listen(8000, function(){ console.log('Listening on port 8000...') )
启动此应用程序,然后在浏览器中单击以下URL。
http://localhost:8000/
http://localhost:8000/hello-Seite/
输出将是
对于监听8000//localhost:8000/,URL为/ ,因此logger的输出为当前时间和/。同样,对于url也是如此/hello-Seite/。