如何在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