Sobes.tech
Middle

Was ist Middleware?

sobes.tech KI

Antwort von AI

Middleware (Zwischensoftware) ist eine Software-Schicht oder ein Framework, das eingehende HTTP-Anfragen verarbeitet, bevor sie den End-Handler (z.B. Controller) erreichen, und ausgehende HTTP-Antworten nach der Verarbeitung. Es führt verschiedene Aktionen aus: Authentifizierung, Autorisierung, Protokollierung, Modifikation der Anfrage/Antwort usw. Middlewares bilden in der Regel eine Pipeline, in der jedes Middleware seine Funktion ausführt und die Anfrage an den nächsten oder den End-Handler weitergibt.

Beispiel in PHP (mit PSR-7/PSR-15):

<?php

use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;

class AuthenticationMiddleware implements MiddlewareInterface
{
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        // Überprüfung der Benutzer-Authentifizierung
        if (!$this->isAuthenticated($request)) {
            // Wenn der Benutzer nicht authentifiziert ist, Fehler zurückgeben
            return new \Slim\Psr7\Response(401); // Beispiel für PSR-7-Antwort
        }

        // Wenn der Benutzer authentifiziert ist, Anfrage an den nächsten Handler weitergeben
        return $handler->handle($request);
    }

    private function isAuthenticated(ServerRequestInterface $request): bool
    {
        // Logik zur Überprüfung der Authentifizierung (z.B. Header, Sitzung usw.)
        return true; // Platzhalter
    }
}

class LoggingMiddleware implements MiddlewareInterface
{
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        // Protokollierung der Anfrageinformationen vor der Verarbeitung
        $method = $request->getMethod();
        $uri = (string) $request->getUri();
        error_log("Handling request: $method $uri");

        // Anfrage an den nächsten Handler weitergeben und Antwort erhalten
        $response = $handler->handle($request);

        // Protokollierung der Antwortinformationen nach der Verarbeitung
        $statusCode = $response->getStatusCode();
        error_log("Response status: $statusCode");

        // Antwort zurückgeben
        return $response;
    }
}

// Beispiel in einem Router (vereinfachte Version)
// $router->addMiddleware(new AuthenticationMiddleware());
// $router->addMiddleware(new LoggingMiddleware());
// $router->addRoute('GET', '/profile', new ProfileHandler());

Middlewares ermöglichen die Zerlegung der Anfrageverarbeitungslogik, was den Code modularer, wiederverwendbarer und leichter testbar macht. Sie folgen dem Prinzip "Single Responsibility".