[英]Making two HTTP POST Requests in Flask
我需要执行以下两个代码中所示的两个post请求,但是只有一个POST正在工作,下面是python代码:
import json
from flask import Flask, render_template, request, jsonify
import requests
app = Flask(__name__)
@app.route("/",methods=['GET','POST'])
def home():
if request.method == 'POST':
#user inputs
value1 = request.form.get('first')
value2 = request.form.get('second')
value3 = request.form.get('third')
#api call
url = 'http://apihere/myapi'
payload = {
"perfid" : value1,
"section" : {
"hostname" : value2,
"iteration" : value3,
"sectionname" : "sysstat_M"
}
}
payload1 = {
"perfid" : value1,
"section" : {
"hostname" : value2,
"iteration" : value3,
"sectionname" : "sysstat_x_1sec"
}
}
r = requests.post(url, data=json.dumps(payload))
returnData = {}
r1 = requests.post(url, data=json.dumps(payload1))
returnData1 = {}
if r.status_code == 200:
returnData["status"] = "SUCCESS"
returnData["result"] = json.loads(r.text)
return jsonify(returnData)
else:
returnData["status"] = "ERROR"
return jsonify(returnData)
if r1.status_code == 200:
returnData1["status"] = "SUCCESS"
returnData1["result"] = json.loads(r1.text)
return jsonify(returnData1)
else:
returnData1["status"] = "ERROR"
return jsonify(returnData1)
#print(r.status_code, r.headers['content-type'])
#print(r.text)
return render_template('index.html')
@app.route("/filer",methods=['GET','POST'])
def filer():
if request.method == 'POST':
#user inputs
value = request.form.get('first')
#api call
url = 'http://myanother/api'.format(value)
response = requests.get(url)
returnData = {}
if response.status_code == 200:
returnData["status"] = "SUCCESS"
returnData["result"] = json.loads(response.text)
return jsonify(returnData)
else:
returnData["status"] = "ERROR"
return jsonify(returnData)
#jsonify(response.json())
return render_template('filer.html')
if __name__ == '__main__':
app.run(debug=True)
如下图所示,屏幕截图仅显示一个POST起作用。如何使两个HTTP POST都起作用,有人可以建议???
两种POST都可能有效,但是您在检查了第一个后便返回。
if r.status_code == 200:
returnData["status"] = "SUCCESS"
returnData["result"] = json.loads(r.text)
return jsonify(returnData) # HERE
else:
returnData["status"] = "ERROR"
return jsonify(returnData) # OR HERE
if r1.status_code == 200:
returnData1["status"] = "SUCCESS"
returnData1["result"] = json.loads(r1.text)
return jsonify(returnData1) # You'd do it again here...
else:
returnData1["status"] = "ERROR"
return jsonify(returnData1) # ... or here
相反,您需要收集两个结果并将它们一起返回。
if r.status_code == 200:
returnData["status"] = "SUCCESS"
returnData["result"] = json.loads(r.text)
else:
returnData["status"] = "ERROR"
if r1.status_code == 200:
returnData1["status"] = "SUCCESS"
returnData1["result"] = json.loads(r1.text)
else:
returnData1["status"] = "ERROR"
return jsonify(returnData=returnData, returnData1=returnData1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.