1 changed files with 75 additions and 0 deletions
@ -0,0 +1,75 @@ |
|||||
|
# Sous-application - Montage |
||||
|
|
||||
|
Si vous avez besoin de deux applications **FastAPI** indépendantes, avec leur propre implémentation OpenAPI, leur propre documentation, ou autre, vous pouvez monter (mount) une ou plusieurs sous-applications à votre application principale. |
||||
|
|
||||
|
|
||||
|
## Monter une application **FastAPI** |
||||
|
|
||||
|
Monter (mounting) une application signifie ajouter une nouvelle application complètement indépendante sur une URL spécifique, qui prendra en charge tout ce qui se trouve sous cette URL, avec les _opérations de chemin_ déclarées dans cette sous-application. |
||||
|
|
||||
|
### Application principale |
||||
|
|
||||
|
Premièrement, créez l'application **FastAPI** principale et ses *opérations de chemin* : |
||||
|
|
||||
|
|
||||
|
```Python hl_lines="3 6-8" |
||||
|
{!../../../docs_src/sub_applications/tutorial001.py!} |
||||
|
``` |
||||
|
|
||||
|
### Sous-application |
||||
|
|
||||
|
Ensuite, créez votre sous-application et ses *opérations de chemin*. |
||||
|
|
||||
|
Cette sous-application est simplement une autre application **FastAPI** standard, mais c'est celle qui sera montée (mount) sur l'application principale : |
||||
|
|
||||
|
```Python hl_lines="11 14-16" |
||||
|
{!../../../docs_src/sub_applications/tutorial001.py!} |
||||
|
``` |
||||
|
|
||||
|
### Monter la sous-application |
||||
|
|
||||
|
Dans votre application principale, `app`, montez la sous-application, `subapi`. |
||||
|
|
||||
|
Dans ce cas, elle sera montée sur l'URL `/subapi` : |
||||
|
|
||||
|
```Python hl_lines="11 19" |
||||
|
{!../../../docs_src/sub_applications/tutorial001.py!} |
||||
|
``` |
||||
|
|
||||
|
### Vérifier la documentation API automatique |
||||
|
|
||||
|
Maintenant, exécutez la commande `fastapi` avec votre fichier : |
||||
|
|
||||
|
<div class="termy"> |
||||
|
|
||||
|
```console |
||||
|
$ fastapi dev main.py |
||||
|
|
||||
|
<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) |
||||
|
``` |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
Et ouvrez la documentation à l'adresse <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a>. |
||||
|
|
||||
|
Vous verrez la documentation automatique de l'API pour l'application principale, incluant seulement ses propres _opérations de chemin_ : |
||||
|
|
||||
|
<img src="/img/tutorial/sub-applications/image01.png"> |
||||
|
|
||||
|
Et ensuite, ouvrez la documentation pour la sous-application, à l'adresse <a href="http://127.0.0.1:8000/subapi/docs" class="external-link" target="_blank">http://127.0.0.1:8000/subapi/docs</a>. |
||||
|
|
||||
|
Vous verrez la documentation API pour la sous-application, incluant uniquement ses propres _opérations de chemin_, toutes avec le préfixe `/subapi` : |
||||
|
|
||||
|
<img src="/img/tutorial/sub-applications/image02.png"> |
||||
|
|
||||
|
Et si vous essayez d'interagir avec l'une des deux API, elles fonctionneront correctement, car le navigateur pourra communiquer avec chaque application ou sous-application spécifique. |
||||
|
|
||||
|
### Détails techniques : `root_path` |
||||
|
|
||||
|
Quand vous montez une sous-application comme décrit ci-dessus, **FastAPI** se chargera de communiquer le préfixe de la sous-application en utilisant un mécanisme de la spécification ASGI appelé `root_path`. |
||||
|
|
||||
|
De cette manière, la sous-application saura utiliser ce préfixe pour la documentation. |
||||
|
|
||||
|
Et la sous-application pourrait également avoir ses propres sous-applications montées, et tout fonctionnerait correctement, car FastAPI gère automatiquement tous ces `root_path`. |
||||
|
|
||||
|
Vous en apprendrez plus sur le `root_path` et comment l'utiliser explicitement dans la section [Derrière un Proxy](behind-a-proxy.md){.internal-link target=_blank}. |
Loading…
Reference in new issue