请求使用的JSON有效性错误

问题描述 投票:0回答:1

我得到了一个烧瓶应用程序,其中一条路线添加了用户。当表单完成并提交后,将调用该路由。问题是,当我提交表单时,我收到一条提示消息:

Expecting value: line 1 column 1 (char 0)
。据我了解,该应用程序似乎不接受我的有效负载,但我不知道为什么。

#Front end
@app.route('/add-user', methods=['POST'])
def addUser():
    username = request.form.get('username')
    email = request.form.get('email')
    password = request.form.get('password')

    # Vérification des données
    if not username or not email or not password:
        flash("Tous les champs sont obligatoires.", "error")
        return redirect('/')

    payload = {
        "username": username,
        "email": email,
        "password": password
    }

    # Appel de l'API pour ajouter un utilisateur
    try:
        response = requests.post('http://' + BACK_END_IP + ':' + BACK_END_PORT + '/add-user', json=payload)
        if response.status_code == 200:
            flash("Utilisateur ajouté avec succès.", "success")
            return redirect('/')
        else:
            error_message = response.json().get("error", "Erreur inconnue.")
            flash(f"Erreur : {error_message}", "error")
            return redirect('/')
    except requests.exceptions.RequestException as e:
        flash(f"Impossible de se connecter à l'API. Détails : {str(e)}", "error")

    return redirect('/')

#Back end
@app.route('/add-user', methods=['POST'])
def addUser():
    current_user = get_user_from_token(request)
    if current_user.admin:
        data = request.get_json()
        username = data.get('username')
        email = data.get('email')
        password = data.get('password')

        if not username or not email or not password:
            return jsonify({"error": "Tous les champs sont requis."}), 400

        # Creation de user et account
        try:
            new_user = User(public_id=str(uuid.uuid4()), username=username, password=hash_password(password), email=email,
                            admin=False, two_factor_enabled=False, valid_code=None, valid_code_exp=None,
                            reset_pswd_code=None, reset_pswd_exp=None)
            db.session.add(new_user)
            db.session.commit()
            account_user = Account(user=new_user.id, public_id=str(uuid.uuid4()), balance=0)
            db.session.add(account_user)
            db.session.commit()

            return jsonify({"message": "Utilisateur ajouté avec succès."}), 200
        except Exception as e:
            # Capture et affichage de l'erreur
            db.session.rollback()
            return jsonify({'message': f"Une erreur est survenue : {str(e)}"}), 500
    else:
        return jsonify({'message': 'You are not admin'}), 401

我尝试在有效负载上使用 jsonify() ,但它只是导致了错误 我在邮递员上测试了后端请求并且它有效。我只是把它放在那里以便理解

python flask
1个回答
0
投票

尝试向您的

requests.post
添加标头以确保其被识别为 JSON:

response = requests.post(
    'http://' + BACK_END_IP + ':' + BACK_END_PORT + '/add-user',
    json=payload,
    headers={'Content-Type': 'application/json'}
)

还要检查后端正在接收哪些数据:

data = request.get_json()
print(data)
# or try this:
print(request.json.items())

在我的项目中我使用了这个并且它有效:

request.json.get('email')

如果这没有帮助,请尝试使用

request.get_json()
来代替
request.form.get()

© www.soinside.com 2019 - 2024. All rights reserved.