Aller au contenu

Sous-applications - Montage

🌐 Traduction par IA et humains

Cette traduction a été réalisée par une IA guidée par des humains. 🤝

Elle peut contenir des erreurs d'interprétation du sens original, ou paraître peu naturelle, etc. 🤖

Vous pouvez améliorer cette traduction en nous aidant à mieux guider le LLM d'IA.

Version anglaise

Si vous avez besoin de deux applications FastAPI indépendantes, avec leur propre OpenAPI et leurs propres interfaces de la documentation, vous pouvez avoir une application principale et « monter » une (ou plusieurs) sous‑application(s).

Monter une application FastAPI

« Monter » signifie ajouter une application entièrement « indépendante » à un chemin spécifique, qui se chargera ensuite de tout gérer sous ce chemin, avec les chemins d'accès déclarés dans cette sous‑application.

Application de premier niveau

Créez d'abord l'application FastAPI principale (de premier niveau) et ses chemins d'accès :

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)

Sous-application

Ensuite, créez votre sous‑application et ses chemins d'accès.

Cette sous‑application est simplement une autre application FastAPI standard, mais c'est celle qui sera « montée » :

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)

Monter la sous-application

Dans votre application de premier niveau, app, montez la sous‑application, subapi.

Dans ce cas, elle sera montée au chemin /subapi :

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)

Vérifier la documentation API automatique

Exécutez maintenant la commande fastapi avec votre fichier :

$ fastapi dev main.py

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

Puis ouvrez la documentation à http://127.0.0.1:8000/docs.

Vous verrez la documentation API automatique pour l'application principale, n'incluant que ses propres chemins d'accès :

Ensuite, ouvrez la documentation de la sous‑application à http://127.0.0.1:8000/subapi/docs.

Vous verrez la documentation API automatique pour la sous‑application, n'incluant que ses propres chemins d'accès, tous sous le préfixe de sous‑chemin correct /subapi :

Si vous essayez d'interagir avec l'une ou l'autre des deux interfaces, elles fonctionneront correctement, car le navigateur pourra communiquer avec chaque application ou sous‑application spécifique.

Détails techniques : root_path

Lorsque vous montez une sous‑application comme ci‑dessus, FastAPI se charge de communiquer le chemin de montage à la sous‑application au moyen d'un mécanisme de la spécification ASGI appelé root_path.

De cette manière, la sous‑application saura utiliser ce préfixe de chemin pour l'interface de documentation.

La sous‑application peut également avoir ses propres sous‑applications montées et tout fonctionnera correctement, car FastAPI gère automatiquement tous ces root_path.

Vous en apprendrez davantage sur root_path et sur la façon de l'utiliser explicitement dans la section Derrière un proxy.