Startseite - Artikel - Informationen

Wie erstelle ich eine benutzerdefinierte Middleware in Quartz Flask?

David Smith
David Smith
David ist Vertriebsleiter von Donghai County Alpha Quartz Products Co., Ltd.

Im Bereich der Webentwicklung erfreut sich Flask, ein leichtes und dennoch leistungsstarkes Python-Webframework, aufgrund seiner Einfachheit und Flexibilität großer Beliebtheit. Quartz Flask ist für seine hohe Leistung und Zuverlässigkeit bekannt und spielt in diesem Bereich eine Schlüsselrolle. Als Lieferant von Quartz Flask weiß ich, wie wichtig kundenspezifische Middleware für die Verbesserung der Funktionalität einer Quartz Flask-Anwendung ist. In diesem Blogbeitrag werde ich Sie durch den Prozess der Erstellung einer benutzerdefinierten Middleware in Quartz Flask führen.

Middleware verstehen

Bevor Sie sich mit der Erstellung benutzerdefinierter Middleware befassen, ist es wichtig zu verstehen, was Middleware ist. Middleware in einer Webanwendung fungiert als Brücke zwischen dem Client und der Anwendung. Es fängt Anfragen und Antworten ab und ermöglicht Ihnen die Durchführung von Vorgängen wie Protokollierung, Authentifizierung und Datenvorverarbeitung, bevor die Anfrage die Ansichtsfunktion erreicht oder nachdem die Antwort generiert wurde.

In Quartz Flask kann Middleware verwendet werden, um die Sicherheit zu erhöhen, die Leistung zu optimieren und Ihrer Anwendung benutzerdefinierte Funktionen hinzuzufügen. Beispielsweise möchten Sie möglicherweise jede eingehende Anfrage zu Debugging-Zwecken protokollieren oder Benutzer authentifizieren, bevor sie auf bestimmte Routen zugreifen.

Voraussetzungen

Um dieser Anleitung folgen zu können, müssen Sie über grundlegende Kenntnisse von Python und Flask verfügen. Sie sollten auch Quartz Flask in Ihrer Entwicklungsumgebung installiert haben. Wenn Sie es noch nicht installiert haben, können Sie es verwendenPipum es zu installieren:

pip install Quarz - Kolben

Erstellen einer einfachen benutzerdefinierten Middleware

Beginnen wir mit der Erstellung einer einfachen benutzerdefinierten Middleware, die jede eingehende Anfrage protokolliert. Diese Middleware gibt die Anforderungsmethode, die URL und die Header an die Konsole aus.

from quartz_flask import Flask app = Flask(__name__) class RequestLoggingMiddleware: def __init__(self, app): self.app = app def __call__(self, environ, start_response): # Protokollieren Sie die Anforderungsmethode, URL und Header method = environ.get('REQUEST_METHOD') url = environ.get('PATH_INFO') headers = '\n'.join([f'{k}: {v}' for k, v in environ.items() if k.startswith('HTTP_')]) print(f"Request: {method} {url}\nHeaders:\n{headers}") # Rufen Sie die nächste Anwendung im Stapel auf return self.app(environ, start_response) # Wrappen Sie die Flask-Anwendung mit der Middleware app.wsgi_app = RequestLoggingMiddleware(app.wsgi_app) @app.route('/') def index(): return 'Hello, World!' if __name__ == '__main__': app.run(debug=True)

In diesem Code definieren wir zunächst eine KlasseRequestLoggingMiddleware. Der__heiß__Die Methode initialisiert die Middleware mit der Flask-Anwendung. Der__Anruf__Die Methode ist der Kern der Middleware. Es fängt die eingehende Anfrage ab, protokolliert die relevanten Informationen und ruft dann die nächste Anwendung im Stapel auf (in diesem Fall die Flask-Anwendung selbst).

Zum Schluss verpacken wir die Flask-Anwendungwsgi_appmit unserer maßgeschneiderten Middleware. Dadurch wird sichergestellt, dass jede Anfrage unsere Middleware durchläuft, bevor sie die Ansichtsfunktion erreicht.

Hinzufügen von Authentifizierungs-Middleware

Ein weiterer häufiger Anwendungsfall für Middleware ist die Authentifizierung. Erstellen wir eine Middleware, die prüft, ob in den Anforderungsheadern ein gültiger API-Schlüssel vorhanden ist.

from quartz_flask import Flask, abort app = Flask(__name__) class APIKeyAuthenticationMiddleware: def __init__(self, app, valid_api_key): self.app = app self.valid_api_key = valid_api_key def __call__(self, environ, start_response): api_key = environ.get('HTTP_API_KEY') if api_key != self.valid_api_key: abort(401) # Unautorisierte Rückgabe self.app(environ, start_response) # Den gültigen API-Schlüssel festlegen valid_api_key = 'your - Secret - api - key' # Die Flask-Anwendung mit der Middleware umschließen app.wsgi_app = APIKeyAuthenticationMiddleware(app.wsgi_app, valid_api_key) @app.route('/protected') def protected(): return 'Dies ist eine geschützte Route!' if __name__ == '__main__': app.run(debug=True)

In diesem Beispiel ist dieAPIKeyAuthenticationMiddlewareDie Klasse prüft, ob ein vorhanden istAPI_KEYin den Anforderungsheadern. Wenn der bereitgestellte API-Schlüssel nicht mit dem gültigen API-Schlüssel übereinstimmt, wird der Fehler 401 Unauthorized zurückgegeben. Andernfalls kann die Anforderung mit der Ansichtsfunktion fortfahren.

Verwendung von Middleware zur Leistungsoptimierung

Middleware kann auch verwendet werden, um die Leistung Ihrer Quartz Flask-Anwendung zu optimieren. Sie können beispielsweise eine Middleware erstellen, die die Antworten bestimmter Routen zwischenspeichert.

from quartz_flask import Flask import time app = Flask(__name__) class ResponseCachingMiddleware: def __init__(self, app, Cache_time=60): self.app = app self.cache_time = Cache_time self.cache = {} def __call__(self, environ, start_response): url = environ.get('PATH_INFO') if url in self.cache: zwischengespeicherte Antwort, zwischengespeicherte_Zeit = selbst.cache[url] if time.time() - zwischengespeicherte_Zeit < self.cache_time: # Gibt den zwischengespeicherten Antwortstatus, Header, Körper zurück = zwischengespeicherte Antwort start_response(status, headers) return [body.encode()] # Wenn nicht zwischengespeichert oder der Cache abgelaufen ist, rufen Sie die nächste Anwendung auf. Antwort = self.app(environ, start_response) Status = start_response.status headers = start_response.headers body = ''.join([chunk.decode() für Chunk in Antwort]) # Die Antwort zwischenspeichern self.cache[url] = ((status, headers, body), time.time()) return Response # Die Flask-Anwendung mit der Middleware umschließen app.wsgi_app = ResponseCachingMiddleware(app.wsgi_app, Cache_time=30) @app.route('/cached') def zwischengespeichert(): return 'Diese Antwort wird zwischengespeichert!' if __name__ == '__main__': app.run(debug=True)

In diesem Code ist dieResponseCachingMiddlewareDie Klasse speichert die Antworten auf Anfragen für einen bestimmten Zeitraum zwischen. Wenn innerhalb der Cache-Zeit eine Anfrage für dieselbe URL gestellt wird, wird die zwischengespeicherte Antwort zurückgegeben, anstatt die Anfrage erneut zu verarbeiten.

Zugehörige Laborglaswaren für Quarzkolbenanwendungen

Im Zusammenhang mit Forschung und Entwicklung, wo Quarzkolben häufig verwendet werden, können bestimmte Laborglasgeräte unerlässlich sein. Zum Beispiel einMesszylinder mit Graduierungist nützlich für die genaue Messung von Flüssigkeitsvolumina. AQuarztiegelkann für Hochtemperaturexperimente verwendet werden, und aQuarz-Trenntrichterist ideal zum Trennen nicht mischbarer Flüssigkeiten.

Quartz Separating Funnel2

Fazit und Aufruf zum Handeln

Benutzerdefinierte Middleware in Quartz Flask bietet eine leistungsstarke Möglichkeit, die Funktionalität, Sicherheit und Leistung Ihrer Webanwendungen zu verbessern. Unabhängig davon, ob Sie Anfragen protokollieren, Benutzer authentifizieren oder Antworten zwischenspeichern müssen, kann die Middleware an Ihre spezifischen Anforderungen angepasst werden.

Als Lieferant von Quarzkolben bin ich bestrebt, qualitativ hochwertige Produkte und Support bereitzustellen, um Sie bei der Entwicklung robuster Webanwendungen zu unterstützen. Wenn Sie am Kauf von Quartz Flask interessiert sind oder Fragen zu kundenspezifischer Middleware haben, können Sie sich gerne für ein Beschaffungsgespräch an uns wenden. Wir sind hier, um Sie dabei zu unterstützen, Quartz Flask in Ihren Projekten optimal zu nutzen.

Referenzen

  • Flaschendokumentation
  • Quartz Flask GitHub Repository

Anfrage senden

Beliebte Blog-Beiträge