我的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)用于发布新数据库条目的脚本:
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))我一直遇到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 -我已经尝试了几种方法,包括。发布字符串。你知道我发布字典的方式有什么问题吗?问题似乎出在body = request.get_json()这一点上。我想我没有收集到任何数据...
发布于 2016-08-16 21:54:21
你不需要通过loads请求消息来获取dict格式。存储在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 )发布于 2016-08-16 21:54:49
http://flask.pocoo.org/docs/0.11/api/#flask.Request.get_json
get_json可能已经返回了一个字典,所以您不需要调用json.loads(body) (这是最有可能导致TypeError的原因)。
@app.route('/api/post', methods=['POST'])
def post():
json_body = request.get_json()
new_id = mongo.db.Projects.insert(json_body)
return str(new_id)https://stackoverflow.com/questions/38976532
复制相似问题