You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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 von app.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):