我正在尝试使用Flask构建一个简单的API,现在我想在其中阅读一些发布的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吗?
作为参考,下面是如何从Python客户端发送json的完整代码:
“json=”输入将自动设置内容类型,如下所述:Post JSON using Python Requests
上述客户端将使用此服务器端代码:
我就是这么做的
设置了
silent=True
后,get_json
函数将在尝试检索json主体时自动失败。默认设置为False
。如果您总是期望json主体(不是可选的),请将其保留为silent=False
。设置
force=True
将忽略request.headers.get('Content-Type') == 'application/json'
检查烧瓶是否适合您。默认情况下,这也设置为False
。见flask documentation。
我强烈建议您离开
force=False
,并让客户机发送Content-Type
头,使其更加明确。希望这有帮助!
首先,} method 的属性,它记录了在这里看到
.json
属性是一个委托给^{None
的原因。您需要将请求内容类型设置为} documentation :
application/json
,以便.json
属性和.get_json()
方法(不带参数)工作,否则两者都将生成None
。请参见Flask ^{通过传递
force=True
关键字参数,您可以告诉request.get_json()
跳过内容类型要求。注意,如果此时引发异常(可能导致400个错误的请求响应),那么JSON数据无效。它在某种程度上格式不正确;您可能需要使用JSON验证器来检查它。
相关问题 更多 >
编程相关推荐