从python flask中的另一个.py文件中获取api数据



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

main.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)

您编写的代码是正确的。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/

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

main.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)

最新更新