Python Flask Restful API

1 python json flask flask-restful

我的 Flask 代码的一部分:

@app.route('/api/post', methods=['POST']) 
def post():
    body = request.get_json()
    json_body = json.loads(body)
    new_id = mongo.db.Projects.insert(json_body)
    return str(new_id)
Run Code Online (Sandbox Code Playgroud)

用于发布新数据库条目的脚本:

payload =  { 'ProjectName' : 'KdB Test Project' }
headers = {'Content-type': 'application/json', 'Accept': 'application/json'}
r = requests.post('http://localhost:5000/api/post', headers=headers, data=json.dumps(payload))
Run Code Online (Sandbox Code Playgroud)

我不断收到 json 解码器 TypeError 问题,例如

TypeError: expected string or buffer
2016-08-16 15:19:31,388 - werkzeug - INFO - 127.0.0.1 - - [16/Aug/2016 15:19:31] "POST /api/post HTTP/1.1" 500 -
Run Code Online (Sandbox Code Playgroud)

我尝试过几件事,包括。发布字符串。我发布字典的方式有什么问题吗?问题似乎出在 body = request.get_json() 处。我不认为我正在收集任何数据...

stu*_*nox 5

您不需要loads请求消息来获取字典格式。存储在变量中的信息body已经是字典形式。只需执行以下操作即可消除错误:

@app.route('/api/post', methods=['POST']) 
def post():
    body = request.get_json()
    # json_body = json.loads(body)
    new_id = mongo.db.Projects.insert( body )
    return str( new_id )
Run Code Online (Sandbox Code Playgroud)