【问题标题】:Segregate tightly coupled frontend and backend分离紧密耦合的前端和后端
【发布时间】:2017-09-07 14:06:08
【问题描述】:

Python-2.7, Web Framework : Flask

我的前端和后端位于同一台服务器上。我正在使用烧瓶 Web 框架(GET/POST API 以及渲染模板)。现在我想将它们隔离并托管在两台不同的机器上。由于代码库是紧密耦合的,而且我主要是渲染 HTML 文件,我该如何实现呢?

【问题讨论】:

    标签: javascript html flask web-applications web-deployment


    【解决方案1】:

    如果您直接从服务器渲染 html,您仍然可以分散前端和后端。使用 REST API 或类似的东西创建您的后端服务器。然后对于您的前端服务器,只需让它调用后端服务器并返回以 html 呈现给客户端的结果。这样一来,您就不需要公开您的后端服务器。

    这是一个例子:

    后端

    @app.route('/mydata/')
    def mydata:
        # ... logic/service calls ...
        return jsonify(result)
    

    前端

    import requests
    
    @app.route('/')
    def index():
        api_result = requests.get(API_URL + '/mydata/')
        # ... Map api_result to result ...
        return render_template('index.html', result=result)
    

    【讨论】:

    • 你的意思是我们可以从html文件本身对后端REST API进行Ajax调用而不是渲染,并获取数据,对吗?
    • 它会从您的视图中进行调用,然后传递到您的模板中。虽然你的前端项目中仍然会有代码,但它不会有你的任何后端逻辑。
    • 好的,我会尝试实现这个。一个问题虽然将两者(前端和后端)分开会增加网页的额外开销,对吗?
    • 我应该澄清一下 - 这通常完成的典型方式是从视图中使用纯粹的“Ajax”调用。我的解决方案是对您进行最小的更改,因为它不是获取数据并改变视图客户端,而是在发送视图服务器端之前获取数据。
    • 是的,会有更多开销,但在大多数情况下可以忽略不计。
    猜你喜欢
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多