Sie können Middleware zu FastAPI-Anwendungen hinzufügen.
Eine „Middleware“ ist eine Funktion, die mit jedem Request arbeitet, bevor er von einer bestimmten Pfadoperation verarbeitet wird. Und auch mit jeder Response, bevor sie zurückgegeben wird.
Sie nimmt jeden Request entgegen, der an Ihre Anwendung gesendet wird.
Sie kann dann etwas mit diesem Request tun oder beliebigen Code ausführen.
Dann gibt sie den Request zur Verarbeitung durch den Rest der Anwendung weiter (durch eine bestimmte Pfadoperation).
Sie nimmt dann die Response entgegen, die von der Anwendung generiert wurde (durch eine bestimmte Pfadoperation).
Sie kann etwas mit dieser Response tun oder beliebigen Code ausführen.
Dann gibt sie die Response zurück.
Technische Details
Wenn Sie Abhängigkeiten mit yield haben, wird der Exit-Code nach der Middleware ausgeführt.
Wenn es Hintergrundaufgaben gab (später dokumentiert), werden sie nach allen Middlewares ausgeführt.
Wenn Sie jedoch benutzerdefinierte Header haben, die ein Client in einem Browser sehen soll, müssen Sie sie zu Ihrer CORS-Konfigurationen (CORS (Cross-Origin Resource Sharing)) hinzufügen, indem Sie den Parameter expose_headers verwenden, der in der Starlette-CORS-Dokumentation dokumentiert ist.
Technische Details
Sie könnten auch from starlette.requests import Request verwenden.
FastAPI bietet es als Komfort für Sie, den Entwickler, an. Aber es stammt direkt von Starlette.
Sie können Code hinzufügen, der mit dem request ausgeführt wird, bevor dieser von einer beliebigen Pfadoperation empfangen wird.
Und auch nachdem die response generiert wurde, bevor sie zurückgegeben wird.
Sie könnten beispielsweise einen benutzerdefinierten Header X-Process-Time hinzufügen, der die Zeit in Sekunden enthält, die benötigt wurde, um den Request zu verarbeiten und eine Response zu generieren: