Перейти до змісту

Підзастосунки - монтування

🌐 Переклад ШІ та людьми

Цей переклад виконано ШІ під керівництвом людей. 🤝

Можливі помилки через неправильне розуміння початкового змісту або неприродні формулювання тощо. 🤖

Ви можете покращити цей переклад, допомігши нам краще спрямовувати 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 і як використовувати його явно в розділі За представником.