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):