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.