Tengo una Api desarrollada en el framework FastApi. Tengo una aplicación Angular que llama a FastApi. Debido a varias razones, sería genial (nombres de red, parámetros, imágenes acoplables, etc.) si pudiera implementar la aplicación angular en FastApi como una aplicación web simple. De esta manera podría acceder a la Api como "localhost" y la Api puede ser "privada".
es posible?
gracias jose cruz
No se si te pueda ayudar pero a mi me funciono.
Les advierto que esta no es una buena práctica pero en el contexto en que la apliqué resolvió mi problema.
Tengo una pequeña aplicación Angular que inicia sesión y autentica la redirección a la documentación de Redoc y Swagger de FastAPI.
Configuré un directorio con archivos estáticos y puse la compilación angular dentro. En FastAPI hice un punto final leyendo y sirviendo el archivo index.html.
Para que Angular vea los archivos, construyo Angular pasando el indicador --base-href que apunta al directorio estático montado.
Los códigos se ven así:
project/ static/ index.html ... (files app angular) main.pyprincipal.py
from fastapi import FastAPI from fastapi.responses import HTMLResponse from fastapi.staticfiles import StaticFiles app = FastAPI() app.mount("/static", StaticFiles(directory="static"), name="static") @app.get('/') def get_app_angular(): with open('static/index.html', 'r') as file_index: html_content = file_index.read() return HTMLResponse(html_content, status_code=200)Construir aplicación angular:
ng build --base-href static/ --prod
No, no es posible que yo sepa. Sería como hablar dos idiomas diferentes. Con los archivos JSON, es posible que pueda compartir configuraciones, pero no más.
Tal vez yendo al nivel bajo (tanto python como nodejs están escritos en C o C ++), podría vincularlos, pero obtendría muchos más gastos generales para hacer esto que simplemente generar dos contenedores separados.
Además, separar la API y la interfaz es una buena práctica, que le permite realizar cambios/actualizaciones de una forma mucho más sencilla y escalar un servicio en caso de picos repentinos. Además, se mejora la seguridad, ya que los dos contenedores están virtualmente separados y asegurados por los contenedores. Irrumpir en uno no comprometería necesariamente al segundo (dije que lo haría porque depende de la información de acceso que almacene y los permisos que le otorgue al primero).