Was ist eine Middleware?

”Middlewarefunktionen sind Funktionen, die Zugriff auf das Anforderungsobjekt (req), das Antwortobjekt (res) und die nächste Middlewarefunktion im Anforderung/Antwort-Zyklus der Anwendung haben. Die nächste Middlewarefunktion wird im Allgemeinen durch die Variable next bezeichnet.“ 1

Es wird zwischen verschiedenen Middleware-Typen unterschieden:

Middleware auf Anwendungsebene

Middlewares auf Anwendungsebene werden direkt an eine Instanz von Express gebunden. Der nachfolgende Ausschnitt gibt ein Beispiel 1:

let app = express();
app.get(’/’, function (req, res, next) { 
    res.send(’Hello World!’);
});

Middleware auf Routerebene

Seit Express.js Version 4.x wurde eine Router-Klasse eingeführt. Im Wesentlichen handelt es sich dabei um eine abgespeckte Variante der Express-Klasse, es können auf die gleiche Weise Middlewares an ein Router-Objekt gebunden werden. Das Router-Objekt wird wiederum wie eine Middleware an das Express-Objekt gebunden. Dies birgt den wesentlichen Vorteil, dass so eine zusätzliche Abstraktionsschicht möglich ist. 1

let express = require(’express’); 
let router = express.Router();
let app = express();
// routes
router.get(’/’, function (req, res, next) { 
    res.send(’Hello World!’);
});
// bind the routes to the app
app.use(’/route’, router);

Middleware für die Fehlerbehandlung

Fehlerbehandlungen werden wie andere Middlewares an ein Express oder Router Objekt gebunden. Die Callback-Funktion enthält allerdings einen zusätzlichen Parameter ”err“. 1

app.use(function(err, req, res, next) { 
    console.error ( err ) ;
    res.status(500).send(’Error!’);
});

Integrierte Middleware

Seit Version 4.x besteht keine Abhängigkeite zu ”Connect“ mehr. Alle Middlewarefunktionen, die bislang in Express enthalten waren, wurden nun in separate Module ausgelagert. 1

Middleware anderer Anbieter

Durch zusätzliche Module von Drittanbietern kann die Funktionalität von Express.js erweitert werden. Dies wird hier aber nicht naher erläutert. 1

results matching ""

    No results matching ""