首页 > 解决方案 > 为什么我的请求适用于邮递员,但不适用于 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

帮帮我,我疯了!(:

标签: vue.jsflaskaxios

解决方案


Axios 默认发布application/json请求正文。

要在 Flask 中读取 JSON 有效负载,请使用request.json

content = request.json
mail = content["mail"]

我只能假设 Postman 可以工作,因为您正在发布application/x-www-form-urlencoded请求正文或使用 URL 查询参数。

为了匹配您在 Axios 中所做的事情,请确保您发布 JSON

邮差


推荐阅读