向 Postman 请求 JSON 输入以运行 API

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

我是 Postman 的新手。我已经构建了机器学习模型并尝试使用 api 预测新数据。我正在使用以下代码:

import pandas as pd
from flask import Flask,request,jsonify
import pickle

app = Flask(__name__)

@app.route('/model_prediction', methods = ['POST'])
def model_prediction():
    
    dic_data = request.form 
    file_path= dic_data["file_path"]
    print(file_path)
    input_data = request.json
    print(input_data)
    prediction_data = pd.DataFrame(input_data)
    prediction_data =prediction_data.T
    print(prediction_data)
    
    with open(file_path+'/decisiontree.pkl','rb') as f:
            model = pickle.load(f)
        
    prediction = model.predict(prediction_data)
    
    return jsonify('preidiction is :',prediction)

if __name__ == "__main__":
    app.run(debug=True)

在 Postman 上运行此 API 时,我想获得两个输入。一个是

file_path
,另一个是 json 格式的数据。下面是我如何传递值的屏幕截图:

img-1

img-2

通过上述过程,我收到以下错误:

img-3

我无法识别这里的错误并被卡住了。有人可以帮我解决这个问题吗。

python flask postman
1个回答
1
投票

您不能混合搭配

request.form
request.json
。您可以使用其中之一,但不能同时使用两者。对于 REST API,您应该仅使用
request.json
。您可以通过接受两个键轻松完成此操作:
file_path
data
。因此,您可以使用“原始”正文格式在 Postman 中执行类似的操作:

{
    "file_path": "/path/to/the/file",
    "data": [ ...all the numbers here ... ]
}

现在在您的代码中,您可以访问

request.json['file_path']
request.json['data']
来获取其中的每一个。

尽管如此,我强烈建议不要允许用户在 JSON 中指定

file_path
。他们如何知道服务器上文件的路径?如果他们这样做,就会带来安全风险,因为他们可以尝试读取系统中任何位置的文件。

© www.soinside.com 2019 - 2024. All rights reserved.