我得到了 json 格式的三个不同结果,并希望在 API 上反映结果。我正在使用 Flask 来显示发布请求。这应该通过有效负载来完成。所以,这三个json有三个不同的Url。早些时候,我使用硬编码路径来获取结果。现在,新的指令是,我必须动态获取所有所需数据的路径并显示结果。
下面的代码我用来显示发布请求和我从中获取数据的 main_func() 。每当我点击代码时,它都会显示错误 - “Request”对象没有属性“body”。我在这里有点困惑,动态地得到结果。
@app.route('/result_spec', methods=['POST'])
def get_result_spec():
try:
payload = get_params_api(request)
result_spec, _, _ = main_func(request = payload)
return jsonify({"result_spec": result_spec})
except Exception as e:
return jsonify({"error": str(e)}), 500
def get_params_api(request):
# if request and hasattr(request, 'body'):
if request is not None:
json_body = json.loads(request.body)
# if json_body is not None:
ads_path = json_body["csv_path"]
json_path = json_body["spec_path"]
input_path = json_body["input_path"]
variable = json_body["variable"]
files_ = json_body["files_"]
variable_name1 = json_body["variable_name1"]
t_and_v = json_body["t_and_v"]
else:
csv_path = r"file.csv"
input_path = r"split_folder"
json_path = r"sample_transformation.json"
variable, files_, variable_name1, t_and_v = get_params()
payload = {
"csv_path": csv_path,
"json_path": json_path,
"input_path": input_path,
"dependent_variable": dependent_variable,
"files_geo": files_geo,
"variable_name": variable_name,
"trans_and_values": trans_and_values
}
return payload
def main_func(params):
csv_path = params["csv_path"]
json_path = params["json_path"]
input_path = params["input_path"]
variable = params["variable"]
files_ = params["files_"]
variable_name1 = params["variable_name1"]
t_and_v = params["t_and_v"]
# store_path_list = get_s3_directory_tree(input_path)
spath_list = get_s3_directory_tree(input_path)
df_data = get_S3_csv_data(spath_list[0])
header_ = get_header_names(df_data)
sp = read_json(json_path, header_)
result_spec = None
result_json = None
if user_specific_geo:
# result_spec, result_json, result_json_const = main_pipeline_user_specific_copy(spec, files, input_path, files_geo, dependent_variable, variable_name, trans_and_values)
result_spec, result_json, result_json_const = main_pipeline_user_specific(spec,store_path_list, files_geo, dependent_variable, variable_name, trans_and_values)
else:
result_spec, result_json, result_json_const = main_pipeline(spec, dependent_variable,store_path_list)
# payload_data = {"result_spec" : result_spec, "result_json" : result_json,
# "result_json_const" : result_json_const}
return result_spec, result_json , result_json_const
if __name__ == "__main__":
payload = get_params_api(request=None)
result_spec,result_json_const, result_json = main_func(params=payload)
请求对象实际上没有body属性。要在不借助 json 包的情况下请求 json 格式的数据,可以使用 request 对象的
get_json()
函数。
json_body = request.get_json()