小编典典

如何在Flask中获取POST JSON?

json

我正在尝试使用Flask构建一个简单的API,现在我想在其中读取一些POSTed JSON。我使用Postman
Chrome扩展程序执行POST,而我发布的JSON就是{"text":"lalala"}。我尝试使用以下方法读取JSON:

@app.route('/api/add_message/<uuid>', methods=['GET', 'POST'])
def add_message(uuid):
    content = request.json
    print content
    return uuid

在浏览器上,它可以正确返回我放入GET中的UUID,但在控制台上,它只是打印出来None(我希望它可以在其中打印出来{"text":"lalala"}。有人知道我如何从Flask方法中获取发布的JSON吗?


阅读 448

收藏
2020-07-27

共1个答案

小编典典

首先,该.json属性是委派给request.get_json()method的属性,该属性记录了为什么None在此处看到。

您需要将请求内容类型设置为,application/json以使.json属性和.get_json()方法(不带参数)正常工作,None否则两者都会产生这种情况。请参阅Flask
Request文档

如果mimetype表示JSON(包含 application / json
,请参见is_json()),则它将包含已解析的JSON数据,否则为None

您可以request.get_json()通过向其传递force=True关键字参数来告知跳过内容类型要求。

请注意,如果此时引发 异常 (可能导致400 Bad Request响应),则您的JSON 数据
无效。它在某种程度上是不正确的;您可能需要使用JSON验证程序进行检查。

2020-07-27