Beispiel

1. Erstellen

Erstellt die Datei main.py mit diesem Inhalt:

from typing import Optional

from fastapi import FastAPI


app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
    return {"item_id": item_id, "q": q}

2. Ausführen

Startet den Server mit dem folgenden Aufruf (hier wieder am Beispiel von uvicorn):

$ pipenv run uvicorn main:app --reload
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [89155] using statreload
INFO:     Started server process [89164]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

3. Überprüfen

Öffnet euren Webbrowser unter http://127.0.0.1:8000/ und ihr werdet folgendes sehen:

FastAPI root

Ihr erhaltet auch eine interaktive API-Dokumentation, die vom Swagger UI unter http://127.0.0.1:8000/docs bereitgestellt wird:

FastAPI swagger docs

Ihr erhaltet auch eine alternative automatische Dokumentation von ReDoc unter http://127.0.0.1:8000/redoc:

FastAPI ReDoc documentation

4. Aktualisierungen

Jetzt ändern wir die Datei main.py um einen Text von einer PUT-Anfrage zu erhalten:

 from typing import Optional

 from pydantic import BaseModel

 from fastapi import FastAPI


 app = FastAPI()


 class Item(BaseModel):
     name: str
     price: float
     is_offer: Optional[bool] = None


 @app.get("/")
 def read_root():
     return {"Hello": "World"}


 @app.get("/items/{item_id}")
 def read_item(item_id: int, q: Optional[str] = None):
     return {"item_id": item_id, "q": q}


 @app.put("/items/{item_id}")
 def update_item(item_id: int, item: Item):
 return {"item_name": item.name, "item_id": item_id}

Der Server lädt die Datei automatisch neu, da wir den uvicorn-Aufruf in Schritt 2 mit der Option --reload ausgeführt haben.

Auch die interaktive API-Dokumentation zeigt nun den neuen Body mit PUT. Wenn ihr auf die Schaltfläche Try it out (aus der Abbildung in Schritt 3) klickt und einen Wert für den Parameter item_id angebt, wird beim Klick auf die Execute-Schaltfläche der Parameter vom Browser an das API übertragen und die Antwort auf dem Bildschirm angezeigt. Nachfolgend seht ihr die Ausgabe für den beispielhaft eingetragenen Wert 1234:

{
  "item_name": "string",
  "item_id": 1234
}