Saltar a contenido

Sub Aplicaciones - Mounts

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 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 bajo ese path, con las path operations declaradas en esa sub-aplicación.

Aplicación de nivel superior

Primero, crea la aplicación principal de nivel superior de FastAPI, 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 solo otra aplicación estándar de FastAPI, pero es la que se "montará":

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, se montará 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)

Revisa la documentación automática de la API

Ahora, ejecuta el comando fastapi con tu archivo:

$ fastapi dev main.py

<span style="color: green;">INFO</span>:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

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

Detalles Técnicos: root_path

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.