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.
"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.
Primeiro, crie a aplicação principal, de nível superior, FastAPI, e suas operações de rota:
fromfastapiimportFastAPIapp=FastAPI()@app.get("/app")defread_main():return{"message":"Hello World from main app"}subapi=FastAPI()@subapi.get("/sub")defread_sub():return{"message":"Hello World from sub API"}app.mount("/subapi",subapi)
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":
fromfastapiimportFastAPIapp=FastAPI()@app.get("/app")defread_main():return{"message":"Hello World from main app"}subapi=FastAPI()@subapi.get("/sub")defread_sub():return{"message":"Hello World from sub API"}app.mount("/subapi",subapi)
Na sua aplicação de nível superior, app, monte a sub-aplicação, subapi.
Neste caso, ela será montada no caminho /subapi:
fromfastapiimportFastAPIapp=FastAPI()@app.get("/app")defread_main():return{"message":"Hello World from main app"}subapi=FastAPI()@subapi.get("/sub")defread_sub():return{"message":"Hello World from sub API"}app.mount("/subapi",subapi)
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.
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.