Si necesitas tener dos aplicaciones de FastAPI independientes, cada una con su propio OpenAPI independiente y su propia interfaz de docs, puedes tener una aplicación 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 bajo ese path, con las path operations declaradas en esa sub-aplicación.
Primero, crea la aplicación principal de nivel superior de FastAPI, 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 solo otra aplicación estándar de FastAPI, pero es la que se "montará":
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, se montará 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 correcto del sub-path /subapi:
Si intentas interactuar con cualquiera de las dos interfaces de usuario, funcionarán correctamente, porque el navegador podrá comunicarse con cada aplicación o sub-aplicación específica.
Cuando montas una sub-aplicación como se describe 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.