Підзастосунки - монтування¶
🌐 Переклад ШІ та людьми
Цей переклад виконано ШІ під керівництвом людей. 🤝
Можливі помилки через неправильне розуміння початкового змісту або неприродні формулювання тощо. 🤖
Ви можете покращити цей переклад, допомігши нам краще спрямовувати AI LLM.
Якщо вам потрібно мати два незалежні застосунки FastAPI з власними незалежними OpenAPI та власними інтерфейсами документації, ви можете мати головний застосунок і «змонтувати» один або кілька підзастосунків.
Монтування застосунку FastAPI¶
«Монтування» означає додавання повністю «незалежного» застосунку на конкретний шлях, який далі обробляє все під цим шляхом за допомогою операцій шляху, оголошених у цьому підзастосунку.
Застосунок верхнього рівня¶
Спочатку створіть головний, верхньорівневий застосунок FastAPI та його операції шляху:
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)
Підзастосунок¶
Потім створіть свій підзастосунок та його операції шляху.
Цей підзастосунок - просто ще один стандартний застосунок FastAPI, але саме його буде «змонтовано»:
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)
Змонтуйте підзастосунок¶
У вашому застосунку верхнього рівня, app, змонтуйте підзастосунок subapi.
У цьому випадку його буде змонтовано за шляхом /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)
Перевірте автоматичну документацію 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 і як використовувати його явно в розділі За представником.