Saltar al contenido

Sub Aplicaciones - Mounts

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 una aplicación FastAPI

"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.

Aplicación de nivel superior

Primero, crea la aplicación FastAPI principal, de nivel superior, y sus path operations:

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-aplicación

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":

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)

Montar la sub-aplicación

En tu aplicación de nivel superior, app, monta la sub-aplicación, subapi.

En este caso, será montada en el path /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)

Revisar la documentación automática de la API

Ahora, ejecuta el comando fastapi:

fast →fastapi dev
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

restart ↻

Y abre la documentación en http://127.0.0.1:8000/docs.

Verás la documentación automática de la API para la app principal, incluyendo solo sus propias path operations:

Y luego, abre la documentación para la sub-aplicación, en http://127.0.0.1:8000/subapi/docs.

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.

Detalles Técnicos: root_path

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.