3.7 KiB
OpenAPI erweitern
In einigen Fällen müssen Sie möglicherweise das generierte OpenAPI-Schema ändern.
In diesem Abschnitt erfahren Sie, wie.
Der normale Vorgang
Der normale (Standard-)Prozess ist wie folgt.
Eine FastAPI
-Anwendung (-Instanz) verfügt über eine .openapi()
-Methode, von der erwartet wird, dass sie das OpenAPI-Schema zurückgibt.
Als Teil der Erstellung des Anwendungsobjekts wird eine Pfadoperation für /openapi.json
(oder welcher Wert für den Parameter openapi_url
gesetzt wurde) registriert.
Diese gibt lediglich eine JSON-Response zurück, mit dem Ergebnis der Methode .openapi()
der Anwendung.
Standardmäßig überprüft die Methode .openapi()
die Eigenschaft .openapi_schema
, um zu sehen, ob diese Inhalt hat, und gibt diesen zurück.
Ist das nicht der Fall, wird der Inhalt mithilfe der Hilfsfunktion unter fastapi.openapi.utils.get_openapi
generiert.
Und diese Funktion get_openapi()
erhält als Parameter:
title
: Der OpenAPI-Titel, der in der Dokumentation angezeigt wird.version
: Die Version Ihrer API, z. B.2.5.0
.openapi_version
: Die Version der verwendeten OpenAPI-Spezifikation. Standardmäßig die neueste Version:3.1.0
.summary
: Eine kurze Zusammenfassung der API.description
: Die Beschreibung Ihrer API. Dies kann Markdown enthalten und wird in der Dokumentation angezeigt.routes
: Eine Liste von Routen, dies sind alle registrierten Pfadoperationen. Sie stammen vonapp.routes
.
/// info
Der Parameter summary
ist in OpenAPI 3.1.0 und höher verfügbar und wird von FastAPI 0.99.0 und höher unterstützt.
///
Überschreiben der Standardeinstellungen
Mithilfe der oben genannten Informationen können Sie dieselbe Hilfsfunktion verwenden, um das OpenAPI-Schema zu generieren und jeden benötigten Teil zu überschreiben.
Fügen wir beispielsweise ReDocs OpenAPI-Erweiterung zum Einbinden eines benutzerdefinierten Logos hinzu.
Normales FastAPI
Schreiben Sie zunächst wie gewohnt Ihre ganze FastAPI-Anwendung:
{!../../../docs_src/extending_openapi/tutorial001.py!}
Das OpenAPI-Schema generieren
Verwenden Sie dann dieselbe Hilfsfunktion, um das OpenAPI-Schema innerhalb einer custom_openapi()
-Funktion zu generieren:
{!../../../docs_src/extending_openapi/tutorial001.py!}
Das OpenAPI-Schema ändern
Jetzt können Sie die ReDoc-Erweiterung hinzufügen und dem info
-„Objekt“ im OpenAPI-Schema ein benutzerdefiniertes x-logo
hinzufügen:
{!../../../docs_src/extending_openapi/tutorial001.py!}
Zwischenspeichern des OpenAPI-Schemas
Sie können die Eigenschaft .openapi_schema
als „Cache“ verwenden, um Ihr generiertes Schema zu speichern.
Auf diese Weise muss Ihre Anwendung das Schema nicht jedes Mal generieren, wenn ein Benutzer Ihre API-Dokumentation öffnet.
Es wird nur einmal generiert und dann wird dasselbe zwischengespeicherte Schema für die nächsten Requests verwendet.
{!../../../docs_src/extending_openapi/tutorial001.py!}
Die Methode überschreiben
Jetzt können Sie die Methode .openapi()
durch Ihre neue Funktion ersetzen.
{!../../../docs_src/extending_openapi/tutorial001.py!}
Testen
Sobald Sie auf http://127.0.0.1:8000/redoc gehen, werden Sie sehen, dass Ihr benutzerdefiniertes Logo verwendet wird (in diesem Beispiel das Logo von FastAPI):
