Si necesitas tener dos aplicaciones FastAPI independientes, con sus propios OpenAPI independientes y sus propias interfaces de documentación, puedes tener una app principal y "montar" una (o más) sub-aplicación(es).
"Montar" significa añadir una aplicación completamente "independiente" en un path específico, que luego se encarga de manejar todo lo que esté bajo ese path, con las path operations declaradas en esa sub-aplicación.
Primero, crea la aplicación FastAPI principal, de nivel superior, y sus path operations:
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)
Luego, crea tu sub-aplicación, y sus path operations.
Esta sub-aplicación es simplemente otra aplicación FastAPI estándar, pero esta es la 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)
En tu aplicación de nivel superior, app, monta la sub-aplicación, subapi.
En este caso, será montada en el path /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)
Verás la documentación automática de la API para la sub-aplicación, incluyendo solo sus propias path operations, todas bajo el prefijo de sub-path correcto /subapi:
Si intentas interactuar con cualquiera de las dos interfaces de usuario, funcionarán correctamente, porque el navegador podrá comunicarse con cada app o sub-app específica.
Cuando montas una sub-aplicación como se describió arriba, FastAPI se encargará de comunicar el path de montaje para la sub-aplicación usando un mecanismo de la especificación ASGI llamado root_path.
De esa manera, la sub-aplicación sabrá usar ese prefijo de path para la interfaz de documentación.
Y la sub-aplicación también podría tener sus propias sub-aplicaciones montadas y todo funcionaría correctamente, porque FastAPI maneja todos estos root_paths automáticamente.
Aprenderás más sobre el root_path y cómo usarlo explícitamente en la sección sobre Detrás de un Proxy.