因此,我正在开发一个用Flask
开发并部署在Heroku
上的web应用程序。我需要发出一个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
使用以下代码使用Javascript
发出POST
请求:
axios.post('https://textgenerator123.herokuapp.com/predict?', {
data: 'sample text'})
.then((response) => {
console.log(response);
}, (error) => {
console.log(error);
});
但是控制台返回"Got“。因此,web应用程序接收请求,但由于某种原因,数据作为Null
。我是Javascript
的新手,如果有人想帮我,我会很感激的。谢谢!
发布于 2021-06-23 00:48:16
那网络呢?反应如何?如果是在200号的话,那邮筒就应该通过了。“response”可能是来自响应后的响应。我认为您应该检查开发工具中的网络请求,看看响应是什么。
发布于 2021-06-23 02:34:35
如果您使用data = request.get_json()
而不是data.form
,它应该可以工作,因为当您通过axios:{ data: 'sample text'}
发送数据时,它会解析传入的数据。文档解释了可用于请求的方法,在这种情况下,表单数据可能不是您想要使用的。
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)
https://stackoverflow.com/questions/68091973
复制相似问题