问题描述
我有一个在FastApi框架中开发的Api。 我有一个名为FastApi的Angular应用程序。 由于多种原因,如果我可以在FastApi中将角度应用程序部署为简单的Web应用程序,那就太好了(网络名称,参数,泊坞窗映像等)。这样,我可以以“ localhost”的身份访问Api,而Api可以是“私有”。
这可能吗?
谢谢你, 乔斯·克鲁兹(JoséCruz)
解决方法
我不知道它是否可以帮助你,但它对我有用。
我警告你,这不是一个好的做法,但在我应用它的上下文中解决了我的问题。
我有一个小型 Angular 应用程序,它登录并验证重定向到 FastAPI 的 Redoc 和 Swagger 文档。
我建立了一个包含静态文件的目录并将角度构建放在里面。在 FastAPI 中,我创建了一个端点读取并提供 index.html 文件。
为了让 Angular 看到文件,我通过传递 --base-href 标志指向挂载的静态目录来构建 Angular。
代码如下:
project/
static/
index.html
... (files app angular)
main.py
main.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)
构建 APP Angular:
ng build --base-href static/ --prod
不,据我所知这是不可能的。就像说两种不同的语言一样。使用JSON文件,您也许可以共享配置,但不能共享更多。
也许是在底层(python和nodejs都是用C或C ++编写),您可以绑定它们,但是这样做比单独生成两个单独的容器要多得多的开销。
此外,将API和前端分开是一种很好的做法,它使您可以以更简单的形式执行更改/更新,并在出现高峰时扩展一个服务。另外,由于两个容器实际上是分开的并且由容器固定,因此提高了安全性。分成一个,并不一定会危及第二个(我说这是因为它取决于您存储的访问信息以及您授予前者的权限)。