所以我正在开发一个使用 Flask
开发并部署在 Heroku
上的网络应用程序。我需要发出 POST
请求并接收来自服务器的响应。我设法让它与 Python
脚本一起工作,但我需要将代码“翻译”到 Javascript
以便我可以在我的网站上正确使用它。
Flask
上的 Python
应用:
app = Flask(__name__)
CORS(app, support_credentials=True)
@app.route('/')
def index():
return "Index Page"
@app.route('/predict',methods=['GET','POST'])
def predict():
data = request.form.get('data')
if data == None:
return 'Got None'
else:
# model.predict.predict returns a dictionary
prediction = makePrediction(data)
return json.dumps(str(prediction))
if __name__ == "__main__":
app.run(host='0.0.0.0',debug=True)
发出 Python
请求的工作 POST
代码:
def main():
PARAMS = {'data':'sample text'}
response = requests.post(url='https://textgenerator123.herokuapp.com/predict?', data=PARAMS)
print(response.text)
if __name__ == "__main__":
main()
我尝试使用 Axios
向 POST
发出 Javascript
请求,代码如下:
axios.post('https://textgenerator123.herokuapp.com/predict?', {
data: 'sample text'})
.then((response) => {
console.log(response);
}, (error) => {
console.log(error);
});
但控制台返回“Got None”。因此 Web 应用程序收到请求,但出于某种原因将数据设为 Null
。我是 Javascript
的新手,如果有人试图帮助我,我将不胜感激。谢谢!
答案 0 :(得分:0)
网络呢?回应是什么?如果在 200 中,则该帖子应该已经通过了。 “没有得到”可能是来自后响应主体的响应。我认为你应该检查你的开发工具中的网络请求,看看响应是什么。
答案 1 :(得分:0)
如果您使用 data = request.get_json()
而不是 data.form
,它应该可以工作,因为这会在您通过 axios 发送传入数据时对其进行解析:{ data: 'sample text'}
。 docs 解释了可用于请求的方法,在这种情况下,表单数据可能不是您想要使用的。
app = Flask(__name__)
CORS(app, support_credentials=True)
@app.route('/')
def index():
return "Index Page"
@app.route('/predict',methods=['GET','POST'])
def predict():
data = request.get_json()
if data == None:
return 'Got None'
else:
# model.predict.predict returns a dictionary
prediction = makePrediction(data)
print(prediction)
return json.dumps(str(prediction))
if __name__ == "__main__":
app.run(host='0.0.0.0',debug=True)