Zum Inhalt

Metadaten und Dokumentations-URLs

🌐 Übersetzung durch KI und Menschen

Diese Übersetzung wurde von KI erstellt, angeleitet von Menschen. đŸ€

Sie könnte Fehler enthalten, etwa MissverstĂ€ndnisse des ursprĂŒnglichen Sinns oder unnatĂŒrliche Formulierungen, usw. đŸ€–

Sie können diese Übersetzung verbessern, indem Sie uns helfen, die KI-LLM besser anzuleiten.

Englische Version

Sie können mehrere Metadaten-Konfigurationen in Ihrer FastAPI-Anwendung anpassen.

Metadaten fĂŒr die API

Sie können die folgenden Felder festlegen, die in der OpenAPI-Spezifikation und in den BenutzeroberflÀchen der automatischen API-Dokumentation verwendet werden:

Parameter Typ Beschreibung
title str Der Titel der API.
summary str Eine kurze Zusammenfassung der API. VerfĂŒgbar seit OpenAPI 3.1.0, FastAPI 0.99.0.
description str Eine kurze Beschreibung der API. Kann Markdown verwenden.
version str Die Version der API. Das ist die Version Ihrer eigenen Anwendung, nicht die von OpenAPI. Zum Beispiel 2.5.0.
terms_of_service str Eine URL zu den Nutzungsbedingungen fĂŒr die API. Falls angegeben, muss es sich um eine URL handeln.
contact dict Die Kontaktinformationen fĂŒr die freigegebene API. Kann mehrere Felder enthalten.
contact-Felder
ParameterTypBeschreibung
namestrDer identifizierende Name der Kontaktperson/Organisation.
urlstrDie URL, die auf die Kontaktinformationen verweist. MUSS im Format einer URL vorliegen.
emailstrDie E-Mail-Adresse der Kontaktperson/Organisation. MUSS im Format einer E-Mail-Adresse vorliegen.
license_info dict Die Lizenzinformationen fĂŒr die freigegebene API. Kann mehrere Felder enthalten.
license_info-Felder
ParameterTypBeschreibung
namestrERFORDERLICH (wenn eine license_info festgelegt ist). Der fĂŒr die API verwendete Lizenzname.
identifierstrEin SPDX-Lizenzausdruck fĂŒr die API. Das Feld identifier und das Feld url schließen sich gegenseitig aus. VerfĂŒgbar seit OpenAPI 3.1.0, FastAPI 0.99.0.
urlstrEine URL zur Lizenz, die fĂŒr die API verwendet wird. MUSS im Format einer URL vorliegen.

Sie können diese wie folgt setzen:

fromfastapiimport FastAPI
description = """
ChimichangApp API helps you do awesome stuff. 🚀
## Items
You can **read items**.
## Users
You will be able to:
* **Create users** (_not implemented_).
* **Read users** (_not implemented_).
"""
app = FastAPI(
 title="ChimichangApp",
 description=description,
 summary="Deadpool's favorite app. Nuff said.",
 version="0.0.1",
 terms_of_service="http://example.com/terms/",
 contact={
 "name": "Deadpoolio the Amazing",
 "url": "http://x-force.example.com/contact/",
 "email": "dp@x-force.example.com",
 },
 license_info={
 "name": "Apache 2.0",
 "url": "https://www.apache.org/licenses/LICENSE-2.0.html",
 },
)
@app.get("/items/")
async defread_items():
 return [{"name": "Katana"}]

Tipp

Sie können Markdown im Feld description verwenden, und es wird in der Ausgabe gerendert.

Mit dieser Konfiguration wĂŒrde die automatische API-Dokumentation wie folgt aussehen:

Lizenzkennung

Seit OpenAPI 3.1.0 und FastAPI 0.99.0 können Sie die license_info auch mit einem identifier anstelle einer url festlegen.

Zum Beispiel:

fromfastapiimport FastAPI
description = """
ChimichangApp API helps you do awesome stuff. 🚀
## Items
You can **read items**.
## Users
You will be able to:
* **Create users** (_not implemented_).
* **Read users** (_not implemented_).
"""
app = FastAPI(
 title="ChimichangApp",
 description=description,
 summary="Deadpool's favorite app. Nuff said.",
 version="0.0.1",
 terms_of_service="http://example.com/terms/",
 contact={
 "name": "Deadpoolio the Amazing",
 "url": "http://x-force.example.com/contact/",
 "email": "dp@x-force.example.com",
 },
 license_info={
 "name": "Apache 2.0",
 "identifier": "Apache-2.0",
 },
)
@app.get("/items/")
async defread_items():
 return [{"name": "Katana"}]

Metadaten fĂŒr Tags

Sie können auch zusĂ€tzliche Metadaten fĂŒr die verschiedenen Tags hinzufĂŒgen, die zum Gruppieren Ihrer Pfadoperationen verwendet werden, mit dem Parameter openapi_tags.

Er nimmt eine Liste entgegen, die fĂŒr jeden Tag ein Dictionary enthĂ€lt.

Jedes Dictionary kann Folgendes enthalten:

  • name (erforderlich): ein str mit demselben Tag-Namen, den Sie im Parameter tags in Ihren Pfadoperationen und APIRoutern verwenden.
  • description: ein str mit einer kurzen Beschreibung fĂŒr das Tag. Sie kann Markdown enthalten und wird in der BenutzeroberflĂ€che der Dokumentation angezeigt.
  • externalDocs: ein dict, das externe Dokumentation beschreibt mit:
    • description: ein str mit einer kurzen Beschreibung fĂŒr die externe Dokumentation.
    • url (erforderlich): ein str mit der URL fĂŒr die externe Dokumentation.

Metadaten fĂŒr Tags erstellen

Versuchen wir es mit einem Beispiel mit Tags fĂŒr users und items.

Erstellen Sie Metadaten fĂŒr Ihre Tags und ĂŒbergeben Sie diese an den Parameter openapi_tags:

fromfastapiimport FastAPI
tags_metadata = [
 {
 "name": "users",
 "description": "Operations with users. The **login** logic is also here.",
 },
 {
 "name": "items",
 "description": "Manage items. So _fancy_ they have their own docs.",
 "externalDocs": {
 "description": "Items external docs",
 "url": "https://fastapi.tiangolo.com/",
 },
 },
]
app = FastAPI(openapi_tags=tags_metadata)
@app.get("/users/", tags=["users"])
async defget_users():
 return [{"name": "Harry"}, {"name": "Ron"}]
@app.get("/items/", tags=["items"])
async defget_items():
 return [{"name": "wand"}, {"name": "flying broom"}]

Beachten Sie, dass Sie Markdown innerhalb der Beschreibungen verwenden können. Zum Beispiel wird „login" in Fettschrift (login) und „fancy" in Kursivschrift (fancy) angezeigt.

Tipp

Sie mĂŒssen nicht fĂŒr alle von Ihnen verwendeten Tags Metadaten hinzufĂŒgen.

Ihre Tags verwenden

Verwenden Sie den Parameter tags mit Ihren Pfadoperationen (und APIRoutern), um diese verschiedenen Tags zuzuweisen:

fromfastapiimport FastAPI
tags_metadata = [
 {
 "name": "users",
 "description": "Operations with users. The **login** logic is also here.",
 },
 {
 "name": "items",
 "description": "Manage items. So _fancy_ they have their own docs.",
 "externalDocs": {
 "description": "Items external docs",
 "url": "https://fastapi.tiangolo.com/",
 },
 },
]
app = FastAPI(openapi_tags=tags_metadata)
@app.get("/users/", tags=["users"])
async defget_users():
 return [{"name": "Harry"}, {"name": "Ron"}]
@app.get("/items/", tags=["items"])
async defget_items():
 return [{"name": "wand"}, {"name": "flying broom"}]

Hinweis

Lesen Sie mehr zu Tags unter Pfadoperation-Konfiguration.

Die Dokumentation testen

Wenn Sie nun die Dokumentation ansehen, werden dort alle zusÀtzlichen Metadaten angezeigt:

Reihenfolge der Tags

Die Reihenfolge der Tag-Metadaten-Dictionarys definiert auch die Reihenfolge, in der diese in der BenutzeroberflÀche der Dokumentation angezeigt werden.

Auch wenn beispielsweise users im Alphabet nach items kommt, wird es vor diesen angezeigt, da wir deren Metadaten als erstes Dictionary der Liste hinzugefĂŒgt haben.

OpenAPI-URL

StandardmĂ€ĂŸig wird das OpenAPI-Schema unter /openapi.json bereitgestellt.

Sie können das aber mit dem Parameter openapi_url konfigurieren.

Um beispielsweise festzulegen, dass es unter /api/v1/openapi.json bereitgestellt wird:

fromfastapiimport FastAPI
app = FastAPI(openapi_url="/api/v1/openapi.json")
@app.get("/items/")
async defread_items():
 return [{"name": "Foo"}]

Wenn Sie das OpenAPI-Schema vollstÀndig deaktivieren möchten, können Sie openapi_url=None festlegen, wodurch auch die DokumentationsbenutzeroberflÀchen deaktiviert werden, die es verwenden.

Dokumentations-URLs

Sie können die beiden enthaltenen DokumentationsbenutzeroberflÀchen konfigurieren:

  • Swagger UI: bereitgestellt unter /docs.
    • Sie können deren URL mit dem Parameter docs_url festlegen.
    • Sie können sie deaktivieren, indem Sie docs_url=None festlegen.
  • ReDoc: bereitgestellt unter /redoc.
    • Sie können deren URL mit dem Parameter redoc_url festlegen.
    • Sie können sie deaktivieren, indem Sie redoc_url=None festlegen.

Um beispielsweise Swagger UI so einzustellen, dass sie unter /documentation bereitgestellt wird, und ReDoc zu deaktivieren:

fromfastapiimport FastAPI
app = FastAPI(docs_url="/documentation", redoc_url=None)
@app.get("/items/")
async defread_items():
 return [{"name": "Foo"}]

AltStyle ă«ă‚ˆăŁăŠć€‰æ›ă•ă‚ŒăŸăƒšăƒŒă‚ž (->ă‚ȘăƒȘă‚žăƒŠăƒ«) /