【问题标题】:Call python function using Angular?使用Angular调用python函数?
【发布时间】:2020-07-01 11:28:13
【问题描述】:

我在我的项目中使用 Angular8 + Firebase + Python (Flask)。我们不使用 Rest API,而是像这样执行 CRUD 操作:

在 Angular 中创建数据 -> 在 Python 中读取和更新数据 -> 使用 Angular 在 Firebase 中显示更新的数据并删除它。这种方法的问题是 Python 程序每次都必须检查 Firebase 中是否有任何数据。有什么方法可以在 Angular 中调用 Python 函数,以便 Python 后端仅在调用函数时更新数据?

【问题讨论】:

  • 好吧,python 代码不能像 javascript 那样在您的网络浏览器中执行,因此您需要使用 HTTP API 在运行 JS 的客户端代码和服务器代码之间进行通信你的 python 代码在哪里运行。所以也许在你的 python 代码中有一些 API 控制器可以接受来自你的客户端代码的 HTTP 调用
  • firebase.google.com/products/functions 看起来可以在 firebase 上执行服务器功能查看文档firebase.google.com/products/functions
  • 我无法在 firebase 中使用服务器功能,因为最终产品必须部署在 IBM 云中。
  • 我不是这方面的专家,但我知道 Flask 是服务器代码,而 Angular 是前端代码,现在调用另一个的唯一方法是通过 HTTP,因为您使用的是 firebase作为您的后端,如果您不想实现 Rest APIs 来调用您的 python 代码,那么您将需要获取 firebase 来调用您的 python 代码,除非 firebase 将托管您的 python 代码并允许您调用它,否则您还将拥有对托管 Python 代码的服务器进行 HTTP 调用。
  • 看起来你可以像这样firebase.google.com/docs/functions/http-events 触发来自firebase的http调用

标签: python angular firebase flask crud


【解决方案1】:

您可以结合 Angular + Flask 并使用 Flask 作为 API 来通过 Firebase 执行 CRUD 操作。

这是假设您知道如何使用 python 执行 CRUD 操作。这是假设您也知道如何订阅 API 的结果并在 Angular 应用程序中使用它。

proxy.conf.json

{
    "/api": {
        "target": "http://0.0.0.0:8081",    //set this to your flask port and address
        "secure": false
    }
}

package.json

"scripts": {
        "ng": "ng",
        "start": "ng serve --proxy-config proxy.conf.json"
    },

flask.py

@app.route('/api/getcvalue', methods=['GET','POST'])
def getC():
    # get parameters from request
    parameters = request.get_json()
    return jsonify({'C': parameters['C']})

【讨论】:

  • 通过使用它,我们是否可以双向发送数据,即从 Angular 到 Flask 和从 Flask 到 Angular?
  • 是的..这就是目标..你使用get或post从角度发送数据并接收数据作为API结果。
  • 我已经检查了烧瓶 localhost 中的后端代码,并且数据以正确的顺序以 json 格式发送,但我不太擅长前端(尤其是基于 JS 的框架)。你能帮我在 Angular 中订阅后端 API 吗?您能否参考我可以查看的任何文档/教程?
  • auth0.com/blog/… 这有一个例子。关注Consuming Flask Endpoints with Angular。将 API_URL 更改为 api/ 而不是 http://localhost:5000
  • 如果您满意,请接受答案。谢谢。
猜你喜欢
  • 2020-04-23
  • 1970-01-01
  • 1970-01-01
  • 2020-05-19
  • 2019-04-24
  • 2021-03-02
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多