如何在Flask中获取POST 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吗?

回答:

首先,该.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验证程序进行检查。

以上是 如何在Flask中获取POST JSON? 的全部内容, 来源链接: utcz.com/qa/402117.html

回到顶部