vue.js - 为什么我的请求适用于邮递员,但不适用于 vue.js axios?
问题描述
我用 Flask 做了一个背面,用 vue.js 做了一个正面,
为什么我用邮递员提出请求,它返回我想要的,而不是用 axios ......
举个例子 :
this.$axios
.post('http://127.0.0.1:5000/getUserDataByMail', { mail: 'test@test.com' })
.then(response => {
console.log('this.userData')
console.log(response.data)
this.userData = response
}
)
被处理:
@app.route('/getUserDataByMail', methods = ['GET', 'POST'])
def getUserDataByMail():
args = request.args
mail = args['mail']
return jsonify(mail)
cur = mysql.connection.cursor()
dataCur = cur.execute('select * from userdata where email like "' + mail + '"')
if dataCur > 0:
data = cur.fetchall()
cur.close()
return jsonify(data)
cur.close()
但这会导致错误 400 ...
POSThttp://127.0.0.1:5000/getUserDataByMail [HTTP/1.0 400 BAD REQUEST 4ms] Uncaught (in promise) 错误:请求失败,状态码 400
帮帮我,我疯了!(:
解决方案
Axios 默认发布application/json
请求正文。
要在 Flask 中读取 JSON 有效负载,请使用request.json
content = request.json
mail = content["mail"]
我只能假设 Postman 可以工作,因为您正在发布application/x-www-form-urlencoded
请求正文或使用 URL 查询参数。
为了匹配您在 Axios 中所做的事情,请确保您发布 JSON