Request'对象没有属性'body - Flask

问题描述 投票:0回答:1

我得到了 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)
python json api flask
1个回答
0
投票

请求对象实际上没有body属性。要在不借助 json 包的情况下请求 json 格式的数据,可以使用 request 对象的

get_json()
函数。

json_body = request.get_json()
© www.soinside.com 2019 - 2024. All rights reserved.