Zum Inhalt

Unteranwendungen – Mounts

Wenn Sie zwei unabhängige FastAPI-Anwendungen mit deren eigenen unabhängigen OpenAPI und deren eigenen Dokumentationsoberflächen benötigen, können Sie eine Hauptanwendung haben und dann eine (oder mehrere) Unteranwendung(en) „mounten“.

Mounten einer FastAPI-Anwendung

„Mounten“ („Einhängen“) bedeutet das Hinzufügen einer völlig „unabhängigen“ Anwendung an einem bestimmten Pfad, die sich dann um die Handhabung aller unter diesem Pfad liegenden Pfadoperationen kümmert, welche in dieser Unteranwendung deklariert sind.

Hauptanwendung

Erstellen Sie zunächst die Hauptanwendung FastAPI und deren Pfadoperationen:

from fastapi import FastAPI

app = FastAPI()


@app.get("/app")
def read_main():
    return {"message": "Hello World from main app"}


subapi = FastAPI()


@subapi.get("/sub")
def read_sub():
    return {"message": "Hello World from sub API"}


app.mount("/subapi", subapi)

Unteranwendung

Erstellen Sie dann Ihre Unteranwendung und deren Pfadoperationen.

Diese Unteranwendung ist nur eine weitere Standard-FastAPI-Anwendung, aber diese wird „gemountet“:

from fastapi import FastAPI

app = FastAPI()


@app.get("/app")
def read_main():
    return {"message": "Hello World from main app"}


subapi = FastAPI()


@subapi.get("/sub")
def read_sub():
    return {"message": "Hello World from sub API"}


app.mount("/subapi", subapi)

Die Unteranwendung mounten

Mounten Sie in Ihrer Top-Level-Anwendung app die Unteranwendung subapi.

In diesem Fall wird sie im Pfad /subapi gemountet:

from fastapi import FastAPI

app = FastAPI()


@app.get("/app")
def read_main():
    return {"message": "Hello World from main app"}


subapi = FastAPI()


@subapi.get("/sub")
def read_sub():
    return {"message": "Hello World from sub API"}


app.mount("/subapi", subapi)

Es in der automatischen API-Dokumentation betrachten

Führen Sie nun uvicorn mit der Hauptanwendung aus. Wenn Ihre Datei main.py lautet, wäre das:

$ uvicorn main:app --reload

<span style="color: green;">INFO</span>:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

Und öffnen Sie die Dokumentation unter http://127.0.0.1:8000/docs.

Sie sehen die automatische API-Dokumentation für die Hauptanwendung, welche nur deren eigene Pfadoperationen anzeigt:

Öffnen Sie dann die Dokumentation für die Unteranwendung unter http://127.0.0.1:8000/subapi/docs.

Sie sehen die automatische API-Dokumentation für die Unteranwendung, welche nur deren eigene Pfadoperationen anzeigt, alle unter dem korrekten Unterpfad-Präfix /subapi:

Wenn Sie versuchen, mit einer der beiden Benutzeroberflächen zu interagieren, funktionieren diese ordnungsgemäß, da der Browser mit jeder spezifischen Anwendung oder Unteranwendung kommunizieren kann.

Technische Details: root_path

Wenn Sie eine Unteranwendung wie oben beschrieben mounten, kümmert sich FastAPI darum, den Mount-Pfad für die Unteranwendung zu kommunizieren, mithilfe eines Mechanismus aus der ASGI-Spezifikation namens root_path.

Auf diese Weise weiß die Unteranwendung, dass sie dieses Pfadpräfix für die Benutzeroberfläche der Dokumentation verwenden soll.

Und die Unteranwendung könnte auch ihre eigenen gemounteten Unteranwendungen haben und alles würde korrekt funktionieren, da FastAPI sich um alle diese root_paths automatisch kümmert.

Mehr über den root_path und dessen explizite Verwendung erfahren Sie im Abschnitt Hinter einem Proxy.