【问题标题】:Get api data from another .py file in python flask从 python 烧瓶中的另一个 .py 文件获取 api 数据
【发布时间】:2021-06-17 23:02:22
【问题描述】:

我的目标是从一个python文件main.py获取数据到另一个python文件tut.pymain.py 就像一个 api,将数据发送到 tut.py 中的路由。我将不胜感激任何帮助或其他可能的方式。谢谢。

ma​​in.py

from flask import Flask
from flask_restful import Api, Resource

app = Flask(__name__)
api = Api(app)

class Datas(Resource):
    def get(self):
        return {"SignedMessage":"Men"}
api.add_resource(Datas, "/api")

if __name__ == "__main__":
    app.run(debug=True)

tut.py

from flask import Flask, jsonify, request
import requests
from flask_restful import Api, Resource


app = Flask(__name__)
BASE = "http://10.100.17.179:5000/" # my localhost 

#route to get the data from main.py
@app.route("/api12", methods = ['GET'])
def home():
    response = requests.get(BASE + "api")
    print(response)
    return response.json()

if __name__ == "__main__":
    app.run(debug=True)

【问题讨论】:

    标签: python-3.x flask


    【解决方案1】:

    您编写的代码是正确的。 main.py 和 tut.py。但是,问题是,您无法在本地服务器上同时运行这两个应用程序。因此,当您从 tut.py 调用 main.py 中的 API 时,main.py 没有运行。 您可以通过将这两个代码都包含在一个文件中来检查这一点,比如 main.py,然后运行它。它会起作用的。代码供您参考:

    from flask import Flask, jsonify, request
    import requests
    from flask_restful import Api, Resource
    
    
    app = Flask(__name__)
    BASE = "http://10.100.17.179:5000/" # my localhost 
    api = Api(app)
    
    class Datas(Resource):
        def get(self):
            return {"SignedMessage":"Men"}
    api.add_resource(Datas, "/api")
    
    #route to get the data from main.py
    @app.route("/api12", methods = ['GET'])
    def home():
        response = requests.get(BASE + "api")
        print(response)
        return response.json()
    
    if __name__ == "__main__":
        app.run(debug=True)
    

    现在当你调用 api12 时,它会调用 api。但两者都必须在一个文件中。或者,您将不得不托管另一个。 要运行完整的烧瓶应用程序,您应该阅读此文档:https://flask.palletsprojects.com/en/2.0.x/blueprints/

    从一个文件获取数据到另一个文件的另一种方法是导入。在你的情况下,它是这样工作的:

    ma​​in.py

    def functionx():
        result = {"SignedMessage": "Men"}
        return result
    

    在你的 tut.py 中:

    from flask import Flask, jsonify, request
    import requests
    from flask_restful import Api, Resource
    from main import functionx
    
    
    app = Flask(__name__)
    BASE = "http://10.100.17.179:5000/" # my localhost 
    
    #route to get the data from main.py
    @app.route("/api12", methods = ['GET'])
    def home():
        response = functionx()
        return response.json()
    
    if __name__ == "__main__":
        app.run(debug=True)
    

    【讨论】:

    • 我更喜欢使用flask_restful api。我对烧瓶相当陌生。谢谢。
    • 更新了我的答案以更好地帮助您。
    猜你喜欢
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    相关资源
    最近更新 更多