运行 调用 Flask RESTful API 的 Angular 应用的最佳实践

Best practice for running an Angular app which calls a Flask RESTful API

this tutorial 中,他们创建了一个 API using flask,你可以 post 它会给出响应。

然后它会告诉您创建一个 Angular 应用程序来调用 API。

这在 apache 服务器上如何工作?

本教程没有提到这一点,但我尝试在 apache 上使用 WSGI,它可以 运行 一个可以使用

重定向到 angular 应用程序的烧瓶文件
@app.route('/')
def index():  
    return render_template('index.html',content=content)

这是部署 Angular 和 Flask 应用程序的典型方式吗?烧瓶调用 angular index.html 似乎很奇怪,有没有办法以较低的耦合度来做到这一点?

在同一台服务器上使用 Flask 作为 RESTful API 和 运行ning angular 的标准是什么?

无论您使用哪个 JS 框架进行 Web 开发,javascript 都必须在 HTML 文件中提供。这里 Flask 扮演着两个角色,一个是提供那个 HTML 文件(可能还有像 js、css 和图像这样的静态文件),另一个是提供所有其余的 api端点。我认为这种设置没有任何问题。但对于生产环境,您可以使用 nginx 或任何 Web 服务器来提供静态文件,并且只使用 flask 来提供 REST api 调用。如果您的网站流量不是很大,那么仅从 Flask 提供一切服务也很好。

Flask是一个web框架,在WSGI的协议中扮演着WSGI应用程序的角色。它需要一个 WSGI 服务器来与 http 客户端协商,然后调用您的 WSGI 应用程序来处理 http 请求。虽然 Flask 附带一个用于开发的小型 WSGI 服务器,但您应该在生产中使用像 gunicorn 这样的 WSGI 服务器。

Angular 应用程序包含应由 http 服务器提供服务的静态文件。 Nginx 是最好的静态文件 http 服务器。但为了简单起见,Flask 加上 WSGI 服务器可以为您提供这些静态文件。所以你会看到

the flask is calling the angular index.html

关于您的问题

Is this a typical way to deploy an Angular and Flask app?

这是一种典型的开发方式,但不是生产方式。

is there a way to do this with lower coupling? What is the standard for using Flask as a RESTful API and also running angular on the same server?

  1. 通过 Nginx 提供 angular 个文件。
  2. 使用 gunicorn 或其他 WSGI 服务器为 Flask 应用提供服务。
  3. 使用 Nginx 作为 WSGI 服务器的代理也是一个很好的做法。

有问题吗?