Sub Aplicações - Montagens¶
Se você precisar ter duas aplicações FastAPI independentes, cada uma com seu próprio OpenAPI e suas próprias interfaces de documentação, você pode ter um aplicativo principal e "montar" uma (ou mais) sub-aplicações.
Montando uma aplicação FastAPI¶
"Montar" significa adicionar uma aplicação completamente "independente" em um caminho específico, que então se encarrega de lidar com tudo sob esse caminho, com as operações de rota declaradas nessa sub-aplicação.
Aplicação de nível superior¶
Primeiro, crie a aplicação principal, de nível superior, FastAPI, e suas operações de rota:
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)
Sub-aplicação¶
Em seguida, crie sua sub-aplicação e suas operações de rota.
Essa sub-aplicação é apenas outra aplicação FastAPI padrão, mas esta é a que será "montada":
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)
Monte a sub-aplicação¶
Na sua aplicação de nível superior, app
, monte a sub-aplicação, subapi
.
Neste caso, ela será montada no caminho /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)
Verifique a documentação automática da API¶
Agora, execute uvicorn
com a aplicação principal, se o seu arquivo for main.py
, seria:
$ uvicorn main:app --reload
<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
E abra a documentação em http://127.0.0.1:8000/docs.
Você verá a documentação automática da API para a aplicação principal, incluindo apenas suas próprias operações de rota:
E então, abra a documentação para a sub-aplicação, em http://127.0.0.1:8000/subapi/docs.
Você verá a documentação automática da API para a sub-aplicação, incluindo apenas suas próprias operações de rota, todas sob o prefixo de sub-caminho correto /subapi
:
Se você tentar interagir com qualquer uma das duas interfaces de usuário, elas funcionarão corretamente, porque o navegador será capaz de se comunicar com cada aplicação ou sub-aplicação específica.
Detalhes Técnicos: root_path
¶
Quando você monta uma sub-aplicação como descrito acima, o FastAPI se encarrega de comunicar o caminho de montagem para a sub-aplicação usando um mecanismo da especificação ASGI chamado root_path
.
Dessa forma, a sub-aplicação saberá usar esse prefixo de caminho para a interface de documentação.
E a sub-aplicação também poderia ter suas próprias sub-aplicações montadas e tudo funcionaria corretamente, porque o FastAPI lida com todos esses root_path
s automaticamente.
Você aprenderá mais sobre o root_path
e como usá-lo explicitamente na seção sobre Atrás de um Proxy.