在Flask中创建两个HTTP POST请求 [英] Making two HTTP POST Requests in Flask
问题描述
<$ c $c>从jar文件导入json
烧瓶,render_template,request,jsonify
导入请求
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 $ b $ url url ='http:// apihere / myapi'
payload = {
perfid:value1,
section:{
hostname:value2,
iteration:value3,
sectionname:sysstat_M
}
}
payload1 = {
perfid:value1,
section:{
hostname:value2,
iteration:value3,
sectionname $ sys
$ request $ s $ request $ s $ request.post(url,data = json.dumps(payload))
returnData = {}
r1 = requests.post(url,data = json.dumps(payload1))
returnData1 = {}
$ b如果r.status_code == 200:
returnData [ status] =SUCCESS
returnData [result] = json.loads(r.text)
return jsonify(returnData)
else:
returnData [status ] =ERROR
return jsonify(returnData)
$ b $ if r1.status_code == 200:
returnData1 [status] =SUCCESS
returnData1 [结果] = json.loads(r1.text)
返回jsonify(returnData1)
else:
returnData1 [status] =ERROR
返回jsonify(返回数据1)
#print(r.status_code, ('content-type'])
#print(r.text)
return render_template('index.html')
@ app.route(/ filer,methods = ['GET','POST'])
def filer():$ b $如果request.method =='POST':
#user输入
value = request.form.get('first')
#api call $ b $ url 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(respo nse.json())
返回render_template('filer.html')
if __name__ =='__main__':
app.run(debug = True )
如下图所示,只显示一个POST正在工作。如何使两个HTTP POST工作,可以有人建议???
这两个POST都可能正常工作,但您在检查第一个POST后返回。
pre $ 如果r.status_code == 200:
returnData [status] =SUCCESS
returnData [result] = json.loads(r.text)
返回jsonify(返回数据)#这里
else:
returnData [status] =错误
return jsonify(returnData)#OR HERE
if r1.status_code == 200:
returnData1 [status] =SUCCESS
returnData1 [result] = json .loads(r1.text)
return jsonify(returnData1)#你会再次这样做...
else:
returnData1 [status] =错误
return jsonify(returnData1)#...或这里
相反,您需要收集结果和把它们归还。
pre $ 如果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)
I need to do two post request as shown in following code but only one POST is working,below is the python code :
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)
as below screenshot shows only one POST is working.How can I make both HTTP POST working ,can anyone suggest ???
Both POSTs are probably working but you return after checking the first one.
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
Instead, you need to collect both results and return them together.
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)
这篇关于在Flask中创建两个HTTP POST请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!