Ir para o conteúdo

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_paths automaticamente.

Você aprenderá mais sobre o root_path e como usá-lo explicitamente na seção sobre Atrás de um Proxy.