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".