Erstellen Sie Middleware für eine bestimmte Route – Python

[ad_1]

Wenn Sie eine API in Python erstellen und auf ein Problem stoßen, bei dem Sie eine Middleware erstellen müssen, jedoch nur für eine bestimmte Route. Sie erstellen beispielsweise ein Benutzerauthentifizierungssystem und möchten eine Middleware erstellen, die prüft, ob der Benutzer angemeldet ist. Sie möchten diese Middleware jedoch nur für wenige Routen verwenden, nicht für alle Routen. Dann ist dieses Tutorial genau das Richtige für Sie.

Dies kann durch die Erstellung von Subapps in Python erfolgen. Um eine Subapp in Python zu erstellen, müssen wir zunächst eine Datei erstellen, in der wir die globale Variable unserer Subapp speichern.

Erstellen Sie beispielsweise eine Datei config.pyund schreiben Sie den folgenden Code hinein.

# config.py

from fastapi import FastAPI

my_middleware_app = FastAPI()

Erstellen Sie nun eine Datei für unsere Middleware, ich benenne sie my_middleware.py. Es folgt der Code dieser Datei.

from fastapi import Request
from config import my_middleware_app

from fastapi.responses import JSONResponse
from fastapi.encoders import jsonable_encoder

@my_middleware_app.middleware("http")
async def my_func(request: Request, call_next):
	if "Authorization" in request.headers:
		print(request.headers["Authorization"])

		request.state.name = "Adnan"
		response = await call_next(request)
		return response
	else:
		return JSONResponse(content=jsonable_encoder("Authorization header not provided."))

Erläuterung:

  1. Zunächst wird die Subapp „my_middleware_app“ aus dem Modul „config“ importiert.
  2. Dann importiert es „JSONResponse“ und „jsonable_encoder“ aus „fastapi“-Modulen. Sie müssen die Antwort an den Kunden zurücksenden.
  3. Dann erstellen wir eine Middleware mit unserer Subapp „my_middleware_app“.
  4. Dabei prüfen wir, ob die Anfrage den Header „Authorization“ enthält.
    • Weitere Informationen zur Autorisierung in Python finden Sie in unserem Lernprogramm zur Benutzerauthentifizierung.
  5. Wenn nicht, senden wir eine Fehlermeldung.
  6. Falls angegeben, fügen wir der Anfrage eine „Name“-Variable hinzu und übergeben sie an die Route.

Lassen Sie mich Ihnen nun zeigen, wie die Route diese Middleware nutzen kann und wie die Route auf die Variable „name“ zugreifen kann.

Im Folgenden finden Sie den Inhalt unseres main.py Datei, in der die Route erstellt wird.

# main.py

from fastapi import FastAPI, Request
from config import my_middleware_app
import my_middleware

app = FastAPI()

@my_middleware_app.post("/my-route")
def my_route(request: Request):
	return request.state.name

app.mount("/", my_middleware_app)

Wir haben zuerst das Subapp-Modul und die Middleware importiert.

Dann haben wir eine Instanz von erstellt FastAPI (die Haupt-App).

Danach erstellen wir mit unserer Subapp eine Post-Route. Auf diesem Weg verwenden wir die Variable „name“, die wir in unserer Middleware erstellt haben.

Um Werte von der Middleware an die Route zu senden, können wir verwenden request.state Objekt.

Und schließlich mounten wir die Sub-App in unsere Haupt-App.

Eine Middleware zu erstellen und sie nur für eine bestimmte Route in Python zu verwenden, ist manchmal etwas verwirrend. Wenn Sie also beim Befolgen dieser Anleitung auf Probleme stoßen, zögern Sie bitte nicht, Kontakt mit mir aufzunehmen.

[ad_2]