我是 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 格式的数据。下面是我如何传递值的屏幕截图:
通过上述过程,我收到以下错误:
我无法识别这里的错误并被卡住了。有人可以帮我解决这个问题吗。
您不能混合搭配
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
。他们如何知道服务器上文件的路径?如果他们这样做,就会带来安全风险,因为他们可以尝试读取系统中任何位置的文件。