4.8 KiB
Подприложения — Mounts (монтирование)
Если вам нужны два независимых приложения FastAPI, каждое со своим собственным OpenAPI и собственными интерфейсами документации, вы можете иметь основное приложение и «смонтировать» одно (или несколько) подприложений.
Монтирование приложения FastAPI
«Монтирование» означает добавление полностью независимого приложения по конкретному пути; далее оно будет обрабатывать всё под этим путём, используя объявленные в подприложении операции пути.
Приложение верхнего уровня
Сначала создайте основное, верхнего уровня, приложение FastAPI и его операции пути:
{* ../../docs_src/sub_applications/tutorial001_py310.py hl[3, 6:8] *}
Подприложение
Затем создайте подприложение и его операции пути.
Это подприложение — обычное стандартное приложение FastAPI, но именно оно будет «смонтировано»:
{* ../../docs_src/sub_applications/tutorial001_py310.py hl[11, 14:16] *}
Смонтируйте подприложение
В вашем приложении верхнего уровня, app, смонтируйте подприложение subapi.
В этом случае оно будет смонтировано по пути /subapi:
{* ../../docs_src/sub_applications/tutorial001_py310.py hl[11, 19] *}
Проверьте автоматическую документацию API
Теперь запустите команду fastapi с вашим файлом:
$ fastapi dev main.py
<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
И откройте документацию по адресу http://127.0.0.1:8000/docs.
Вы увидите автоматическую документацию API для основного приложения, включающую только его собственные операции пути:
Затем откройте документацию для подприложения по адресу http://127.0.0.1:8000/subapi/docs.
Вы увидите автоматическую документацию API для подприложения, включающую только его собственные операции пути, все под корректным префиксом подпути /subapi:
Если вы попробуете взаимодействовать с любым из двух интерфейсов, всё будет работать корректно, потому что браузер сможет обращаться к каждому конкретному приложению и подприложению.
Технические подробности: root_path
Когда вы монтируете подприложение, как описано выше, FastAPI позаботится о передаче пути монтирования для подприложения, используя механизм из спецификации ASGI под названием root_path.
Таким образом подприложение будет знать, что для интерфейса документации нужно использовать этот префикс пути.
У подприложения также могут быть свои собственные смонтированные подприложения, и всё будет работать корректно, потому что FastAPI автоматически обрабатывает все эти root_path.
Вы узнаете больше о root_path и о том, как использовать его явно, в разделе За прокси{.internal-link target=_blank}.