Aktueller Standort: Startseite> Neueste Artikel> Schreiben Sie Middleware, um get_client_version logic einheitlich zu handhaben

Schreiben Sie Middleware, um get_client_version logic einheitlich zu handhaben

gitbox 2025-05-11

In vielen PHP -Anwendungen müssen wir häufig die Versionsinformationen des Kunden verarbeiten, insbesondere wenn wir mit API -Schnittstellen, Webanwendungen oder mobilen Geräten interagieren, ist die Client -Versionsnummer sehr wichtig. Im Allgemeinen gibt es viele Möglichkeiten, Client -Versionsinformationen zu erhalten, die aus Anforderungsheadern, URL -Parametern oder Cookies erhalten werden können. In jedem Fall muss die logische Implementierung der Funktion get_client_version häufig an mehreren Stellen verwendet werden. Um die Wiederverwendbarkeit, Wartbarkeit und Klarheit des Codes zu verbessern, können wir diese Logik daher gleichmäßig durch Middleware verarbeiten.

1. Was ist Middleware?

Middleware bezieht sich auf ein funktionales Modul, das vor einer Anforderung in die Anwendung oder bevor eine Antwort an den Client gesendet wird. Es wird normalerweise verwendet, um einige gängige Aufgaben wie Überprüfung, Protokollierung, Anforderungsverarbeitung, Berechtigungsprüfung usw. in PHP auszuführen, insbesondere bei Verwendung von Frameworks wie Laravel, Symfony, Middleware ist ein sehr wichtiges Konzept, das uns helfen kann, sich auf einige sich wiederholende Aufgaben zu konzentrieren.

2. Warum muss ich Get_Client_version über Middleware verarbeiten?

Angenommen, wir haben eine Get_Client_Version -Funktion, mit der Client -Versionsinformationen von HTTP -Anforderungen abgerufen werden. Diese Funktion kann an vielen Stellen verwendet werden. Wenn Sie jedes Mal die gleiche Logik wiederholen müssen, entspricht dies offensichtlich nicht dem trockenen Prinzip (nicht wiederholen). Durch Middleware können wir diese Logik in einen gängigen Verarbeitungsfluss einschränken und wiederholte Implementierungen in jedem Controller oder Routen vermeiden.

3.. Wie kann ich die Middleware von get_client_version implementieren?

Wir werden schrittweise vorstellen

3.1 Middleware erstellen

Zunächst müssen wir in unserer PHP -Anwendung eine Middleware -Klasse erstellen. Diese Middleware ist für die Erfassung von Client -Versionsinformationen verantwortlich.

Unter der Annahme, dass wir das Laravel -Framework verwenden, ist der Befehl zum Erstellen der Middleware wie folgt:

 php artisan make:middleware ClientVersionMiddleware

3.2 Middleware Logic schreiben

In der Datei App/HTTP/Middleware/ClientversionMiddleware.php schreiben wir die Logik, um die Client -Version zu erhalten. Beispielsweise kann die Client -Version im angeforderten Header sein oder den GET -Parameter übergeben. Wir können damit nach tatsächlichen Bedürfnissen umgehen.

 namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class ClientVersionMiddleware
{
    public function handle(Request $request, Closure $next)
    {
        // Angenommen, die Client -Version befindet sich im Anforderungsheader
        $clientVersion = $request->header('Client-Version');

        // Wenn die Versionsinformationen im Anforderungsheader nicht gefunden werden,KannURLHolen Sie sich die Parameter von
        if (!$clientVersion) {
            $clientVersion = $request->query('client_version');
        }

        // Wenn die Versionsinformationen noch nicht gefunden werden,Die Standardversion kann verwendet werden
        if (!$clientVersion) {
            $clientVersion = '1.0.0';  // Standardversionsnummer
        }

        // Speichern Sie Versionsinformationen in die Anfrage,Für die anschließende Verwendung
        $request->attributes->set('client_version', $clientVersion);

        // Bearbeiten Sie die Anfrage weiter
        return $next($request);
    }
}

Im obigen Code versuchen wir zunächst, den Wert des Client-Version -Feldes aus dem Anforderungsheader zu erhalten, und wenn es nicht gefunden wird, wird es aus der URL-Parameter client_version abgerufen. Wenn es noch nicht gefunden wird, können wir eine Standardversionsnummer festlegen.

3.3 Middleware registrieren

Als nächstes müssen wir diese Middleware in der Anwendung registrieren. In Laravel können wir Middleware in der App/HTTP/Kernel.php -Datei registrieren.

 protected $routeMiddleware = [
    // Andere Middleware...
    'client_version' => \App\Http\Middleware\ClientVersionMiddleware::class,
];

3.4 mit Middleware

Jetzt können wir diese Middleware in der Route oder im Controller verwenden. Wenn Sie beispielsweise in einem Routing verwendet werden, können Sie Folgendes schreiben:

 Route::get('/some-endpoint', function (Request $request) {
    $clientVersion = $request->get('client_version');
    return response()->json(['client_version' => $clientVersion]);
})->middleware('client_version');

In diesem Beispiel verwenden wir die Client_Version Middleware und erhalten den Wert von Client_version in der Route. Wenn der Client Versionsinformationen in der Anfrage bereitstellt, wird er über die Middleware an die Route übergeben.

3.5 Test

Nachdem Sie die Middleware implementiert und auf die Route angewendet haben, können Sie die Erfassung der Versionsnummer mit unterschiedlichen Anforderungen testen. Sie können es beispielsweise auf folgende Weise testen:

  • Anfrage Header mit Client-Version -Feld anfordern

  • Anfordern URL mit Client_version Parameter

  • Verwenden Sie Standardwerte, wenn keine Versionsinformationen bereitgestellt werden

4. Zusammenfassung

Durch die Middleware kann die Logik der Funktion get_client_version einheitlich verarbeitet werden. Die Wartbarkeit und Wiederverwendbarkeit des Codes kann erheblich verbessert werden. Wir müssen nur die Logik schreiben, um die Version einmal in die Middleware zu erhalten, und dann die Versionsinformationen an alle Anforderungen in der Anwendung über die Middleware weitergeben. Dieser Ansatz vereinfacht nicht nur den Code, sondern macht das Versionsmanagement auch zentraler und konsistenter.