【问题标题】:'400 Bad Request' when post json in Flask在 Flask 中发布 json 时出现“400 Bad Request”
【发布时间】:2015-06-17 01:42:28
【问题描述】:

我的应用很简单,

#@csrt.exempt
@app.route('/preorders/json', methods=['POST'])
def json_create_preorders():
    #print request
    print 'test'
    #print request.json
    print request.mimetype
    print request.json
    print 'aaa',request.get_json(force=True)
    print request.json['product_id']
    if not request.json or not 'product_id' in request.json or not 'customer_name' in request.json or not 'customer_phone' in request.json:
        abort(400)
    preorder=Preorder(request.json['customer_name'],request.json['customer_phone'],request.json['product_id'])
    db.session.add(preorder)
    db.session.commit()
    return jsonify({'status':'success'}), 201

使用 curl 发布 json,

curl -i -H "Content-Type: application/json" -X POST -d '{"product_id":"111", "customer_name"="xiaokun", "customer_phone"="1231"}' http://xxxx/preorders/json

从服务器检查,打印“test”和“request.mimetype”。然后是 400 响应。 谁能帮忙看看?

【问题讨论】:

    标签: python json flask flask-restful


    【解决方案1】:

    如果你是windows系统,需要修改json格式。

    例子: '{"token":"asdfas"}' 替换为 "{\"Hello\":\"Karl\"}"

    【讨论】:

    • 这个答案在 Windows 上为我省去了很多麻烦。它是如此微妙,我没有注意到 Windows 上 CURL 命令的转义部分。谢谢。
    【解决方案2】:

    试试这个

    -d '{"product_id":"111", "customer_name":"xiaokun", "customer_phone":"1231"}'
    

    完整语法

    curl -X POST -H "application/json" -d '{"key":"val"}' URL
    

    【讨论】:

    • 它可以工作......这应该是json的问题。我会检查
    • @Xiaokun .. 你解决了我的问题。我正在使用 '=' 运算符并在这个 Shtuff 上浪费了大约 3 个小时。
    猜你喜欢
    • 2016-05-06
    • 2022-11-29
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 2012-10-12
    • 2015-11-16
    • 1970-01-01
    相关资源
    最近更新 更多