我正在尝试使用Flask构建一个简单的应用程序接口,现在我想在其中阅读一些POSTed JSON。我使用Postman Chrome扩展发布,JSON I发布的只是{"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吗?
发布于 2016-02-25 06:15:58
作为参考,下面是如何从Python客户端发送json的完整代码:
import requests
res = requests.post('http://localhost:5000/api/add_message/1234', json={"mytext":"lalala"})
if res.ok:
print(res.json())
如下所述,"json=“输入将自动设置内容类型:How to POST JSON data with Python Requests?
上面的客户端将使用以下服务器端代码:
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/api/add_message/<uuid>', methods=['GET', 'POST'])
def add_message(uuid):
content = request.json
print(content['mytext'])
return jsonify({"uuid":uuid})
if __name__ == '__main__':
app.run(host= '0.0.0.0',debug=True)
发布于 2015-10-28 06:11:47
这就是我要做的,也应该是这样的
@app.route('/api/add_message/<uuid>', methods=['GET', 'POST'])
def add_message(uuid):
content = request.get_json(silent=True)
# print(content) # Do your processing
return uuid
在设置了silent=True
的情况下,get_json
函数在尝试检索json主体时将静默失败。默认情况下,它设置为False
。如果您总是期望json主体(不是可选的),那么将其保留为silent=False
。
设置force=True
将忽略flask为您执行的request.headers.get('Content-Type') == 'application/json'
检查。默认情况下,这也设置为False
。
我强烈建议保留force=False
,并让客户端发送Content-Type
标头以使其更明确。
希望这能有所帮助!
发布于 2017-02-28 23:40:43
假设您已经使用application/json
内容类型发布了有效的JSON,request.json
将拥有解析后的JSON数据。
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/echo', methods=['POST'])
def hello():
return jsonify(request.json)
https://stackoverflow.com/questions/20001229
复制相似问题