我有一个使用flask的python API,它在正文中提交一个post请求,然后调用并执行另一个python脚本:
testingREST.py:
import testingdf
import json
from flask import Flask, json, request
app = Flask(__name__)
@app.route("/results", methods=['POST'])
def createResults():
entry = request.get_json().get('entry', '')
passcode = request.get_json().get('passcode', '')
data = testingdf.test(entry, passcode)
response = app.response_class(
response=json.dumps(data),
status=200,
mimetype='application/json'
)
return response
if __name__ == "__main__":
app.run(debug = True, host='localhost', port=8080, passthrough_errors=False)
testingdf.py:
import pandas as pd
def test(entry, passcode):
df = pd.DataFrame()
testInput = zip(entry, passcode)
for entry, passcode in testInput:
df = df.append({'Entry': entry, 'Passcode': passcode}, ignore_index=True)
results = {
'Entry' : entry,
'Outcome' : passcode,
}
return results
这是我在调用api
时发布到请求体中的内容{
"entry":[21, 44, 31],
"passcode":["denied", "Try Again", "Retry"]
}
回应:
{
"Entry": 35,
"Outcome": "Success"
}
问题:在请求正文中,没有一个变量用于'条目'另一个用于密码',有没有一种方法可以像我这样的请求体:
{
"entryInfo":[(21, "denied"), (44, "Try Again"), (31, "Retry")]
}
基本上,将它们成对传递,因为我认为我实现它的方式很奇怪,它很容易被错配。另外,我不确定"键/值"这是在这里使用的正确术语,但我希望这会有所帮助。
顺便使用python3。
答案 0 :(得分:0)
您的问题似乎归结为要传递给烧瓶服务器的数据。关于你对这些数据的处理还有另一个问题(你只返回最后一个数据),但你没有问过这个问题。
将此作为请求正文发送。它使用列表表示法,它是有效的JSON。然后,您的烧瓶服务器可以通过解码JSON请求来访问列表。
{"entryInfo": [[21, "denied"], [44, "Try Again"], [31, "Retry"]]}
更好的方法可能是使用字典映射条目代码来传递代码:
{"entryInfo": {"21": "denied", "44": "Try Again", "31": "Retry"}}
是否需要顶级词典是有争议的,你可以逃脱:
{"21": "denied", "44": "Try Again", "31": "Retry"}