![](/img/trans.png)
[英]Passing data from a GET request to a POST request with Python Flask
[英]flask can't get post data from postman or web page,but work in python request
我使用flask作為API服務器。 我用python測試就可以了!
class ModelLoader(MethodView):
def __init__(self):
pass
def post(self):
content = request.get_json()
request
X_input = content['X_input']
X_in = str(X_input)
pred_val,posib = predictor.predict(X_input=X_in)
pred_val = pred_val.tolist()
posib = str(round(posib,4)*100)
#posib = posib.tolist()
return jsonify({'pred_val': pred_val,'confident':posib})
def initialize_models(json_path, weights_path, normalized_x, normalized_y):
global predictor
predictor = Predictor(json_path, weights_path, normalized_x, normalized_y)
predictor.compile_model(loss='categorical_crossentropy', optimizer='adam')
def run(host='0.0.0.0', port=19865):
"""Run a WSGI server using gevent."""
app.add_url_rule('/predict',
view_func=ModelLoader.as_view('predict'))
print('running server http://{0}'.format(host + ':' + str(port)))
WSGIServer((host, port), app).serve_forever()
測試代碼
import requests
def get_predictions(X_input):
"""Get predictions from a rest backend for your input."""
print("Requesting prediction for XOR with {0}".format(X_input))
r = requests.post("http://yansheng.wang:19865/predict", json={'input': X_input})
print(r.status_code, r.reason)
resp = r.json()
prediction = resp['pred_val']
confident = resp['confident']
print("XOR of input: {0} is {1},on confident of {2} ".format(X_input, prediction,confident))
if __name__ == '__main__':
X_inputs = ["885863343916543724"]
for x_input in X_inputs:
get_predictions(x_input)
當我運行它時,我無法從郵遞員或網頁上獲取帖子數據!
服務器控制台輸出差異如下所示,這是怎么回事?:
45.76.182.34 - - [2017-07-29 12:11:55] "POST /predict HTTP/1.1" 200 162 0.044396
45.76.182.34 - - [2017-07-29 12:12:03] "POST /predict?input=3423432432424233 HTTP/1.1" 400 303 0.001046
當使用測試代碼測試代碼時,您將在json主體中傳遞X_input
值。
# part of request
json={'input': X_input}
# I would suggest make the key consistent
# inside post menthod
content = request.get_json()
request
X_input = content['X_input']
X_in = str(X_input)
但是,當您從Web /郵遞員發送它時,您是以url參數發送它。
"POST /predict?input=3423432432424233 HTTP/1.1" 400
因此,它失敗了。 從郵遞員在json正文中發送此數據。 它應該工作。
例:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.