首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Flask Restful API

Python Flask Restful API
EN

Stack Overflow用户
提问于 2016-08-16 21:40:15
回答 2查看 424关注 0票数 1

我的Flask代码的一部分:

代码语言:javascript
复制
@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)

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

代码语言:javascript
复制
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的问题。

代码语言:javascript
复制
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()这一点上。我想我没有收集到任何数据...

EN

回答 2

Stack Overflow用户

发布于 2016-08-16 21:54:21

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

代码语言:javascript
复制
@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 )
票数 4
EN

Stack Overflow用户

发布于 2016-08-16 21:54:49

http://flask.pocoo.org/docs/0.11/api/#flask.Request.get_json

get_json可能已经返回了一个字典,所以您不需要调用json.loads(body) (这是最有可能导致TypeError的原因)。

代码语言:javascript
复制
@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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38976532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档