Heim  >  Artikel  >  Web-Frontend  >  Middleware in Express.js verstehen und implementieren

Middleware in Express.js verstehen und implementieren

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-09-22 06:21:45979Durchsuche

Entendendo e Implementando Middlewares no Express.js

Express.js ist eines der beliebtesten Frameworks zum Erstellen von Webanwendungen mit Node.js. Es erleichtert die Erstellung von RESTful-APIs und ermöglicht Ihnen die modulare Strukturierung von Anwendungen. Eines der Hauptkonzepte in Express.js ist die Verwendung von Middlewares. In diesem Artikel werden wir verstehen, was Middleware ist, wie sie funktioniert und wie Sie Ihre eigene erstellen können.

Was sind Middlewares?

Middlewares sind Funktionen, die Zugriff auf das Anforderungsobjekt (req), das Antwortobjekt (res) und die Funktion next() haben. Sie können das Anfrage- und/oder Antwortobjekt ändern und den Anfrage-Antwort-Zyklus steuern. Eine Middleware kann mehrere Dinge tun, wie zum Beispiel:

  • Führen Sie einen beliebigen Code aus.
  • Ändern Sie die Anfrage und Antwort.
  • Schließen Sie den Anfrage-Antwort-Zyklus.
  • Rufen Sie die nächste Middleware in der Kette auf.

Die grundlegende Signatur einer Middleware in Express.js ist:

function middleware(req, res, next) {
    // Lógica do middleware
    next(); // Chama o próximo middleware
}

Arten von Middleware

In Express finden wir verschiedene Arten von Middleware:

  1. Anwendungs-Middleware: Dies sind Middlewares, die sich auf die gesamte Anwendung oder eine Reihe von Routen auswirken.
  2. Routen-Middleware: Spezifisch für eine oder mehrere Routen.
  3. Integrierte Middleware: Wie express.json() und express.static(), direkt von Express bereitgestellt.
  4. Middleware von Drittanbietern: Wie Morgan oder Cors, die Sie installieren können, um die Funktionalität von Express zu erweitern.

Wie funktioniert Middleware?

Wenn eine Anfrage eingeht, durchläuft sie eine „Middleware-Kette“. Jede Middleware kann die Anfrage verarbeiten und am Ende ihrer Ausführung entscheiden, ob sie die nächste Middleware aufruft (mit der Funktion next()) oder die Antwort finalisiert.

const express = require('express');
const app = express();

// Middleware global
app.use((req, res, next) => {
    console.log('Request Type:', req.method);
    next();
});

// Middleware específico para a rota /user
app.use('/user', (req, res, next) => {
    console.log('Middleware para /user');
    next();
});

app.get('/user', (req, res) => {
    res.send('Página do Usuário');
});

app.listen(3000, () => {
    console.log('Servidor rodando na porta 3000');
});

Erstellen benutzerdefinierter Middleware

Zusätzlich zu der von Express oder Drittanbietern bereitgestellten Middleware können Sie Ihre eigene Middleware erstellen, um bestimmte Funktionen wie Authentifizierung, Protokollierung oder Datenmanipulation zu verwalten.

Beispiel einer einfachen Authentifizierungs-Middleware:

function autenticar(req, res, next) {
    const token = req.header('Authorization');
    if (!token) {
        return res.status(401).send('Acesso negado. Token não fornecido.');
    }
    try {
        // Lógica para validar o token
        next(); // Continua para o próximo middleware
    } catch (err) {
        res.status(400).send('Token inválido.');
    }
}

app.use(autenticar); // Aplica o middleware para todas as rotas

Middleware von Drittanbietern

Express ermöglicht auch die Verwendung von Middleware von Drittanbietern, die über npm installiert werden kann. Einige der beliebtesten sind:

  • Morgan: Für HTTP-Protokolle.
  • Helm: Aus Sicherheitsgründen werden schützende HTTP-Header festgelegt.
  • cors: Um CORS (Cross-Origin Resource Sharing) zu aktivieren.

Morgan installieren und verwenden:

npm install morgan
const morgan = require('morgan');

// Middleware de log
app.use(morgan('tiny'));

app.get('/', (req, res) => {
    res.send('Hello World');
});

Orden der Middleware

Die Reihenfolge, in der Sie die Middlewares definieren, ist wichtig, da sie in der Reihenfolge ausgeführt werden, in der sie registriert sind. Wenn Sie beispielsweise Authentifizierungs-Middleware nach einer Route definieren, die eine Authentifizierung erfordert, wird sie für diese Route nicht ausgeführt.

app.use(express.json()); // Middleware para parsear JSON

app.post('/secure-data', autenticar, (req, res) => {
    res.send('Acesso a dados seguros');
});

Fertigstellung der Middleware

Wenn eine Middleware die Funktion next() nicht aufruft, unterbricht sie den Anfrage-Antwort-Zyklus. Dies kann in Fällen nützlich sein, in denen Sie die Anfrage innerhalb der Middleware selbst abschließen möchten, beispielsweise bei einer Authentifizierungsprüfung:

function autenticar(req, res, next) {
    if (!req.header('Authorization')) {
        return res.status(403).send('Não autorizado');
    }
    next();
}

Abschluss

Middlewares sind ein wesentlicher Bestandteil beim Erstellen von Anwendungen mit Express.js und ermöglichen große Flexibilität und Modularität. Wenn Sie den Einsatz von Middleware beherrschen, können Sie Ihre APIs effizient strukturieren, Code wiederverwenden und Funktionen wie Authentifizierung, Sicherheit und Datenmanipulation auf einfache und skalierbare Weise hinzufügen.

Wenn Sie in Ihren Projekten noch keine benutzerdefinierte Middleware verwenden, beginnen Sie mit etwas Einfachem, wie einer Protokollierungs- oder Authentifizierungs-Middleware, und erleben Sie die Modularität und Flexibilität, die Express.js bietet!


Hat Ihnen der Artikel gefallen? Vergessen Sie nicht, es mit Ihren Entwicklerkollegen zu teilen!

Das obige ist der detaillierte Inhalt vonMiddleware in Express.js verstehen und implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn