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

时间:2017-07-24 23:22:57

标签: apache angular flask flask-restful

this tutorial中,他们使用烧瓶创建了一个API,您可以将其发布到它,它会给出响应。

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

如何在Apache服务器上运行?

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

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

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

将Flask用作RESTful API并在同一台服务器上运行角色的标准是什么?

2 个答案:

答案 0 :(得分:2)

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

Angular app由静态文件组成,应由http服务器提供。 Nginx是静态文件的最佳http服务器。但为简单起见,Flask plus WSGI服务器可以为您提供这些静态文件。所以你会看到

  

烧瓶正在调用angular index.html

谈到你的问题

  

这是部署Angular和Flask应用程序的典型方法吗?

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

  

有没有办法用较低的耦合来做到这一点?   使用Flask作为RESTful API并在同一服务器上运行angular的标准是什么?

  1. 由Nginx提供角度文件。
  2. 使用gunicorn或其他WSGI服务器来提供Flask应用程序。
  3. 使用Nginx作为WSGI服务器的代理也是一种很好的做法。
  4. 有问题吗?

答案 1 :(得分:0)

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