当通过发布请求发送有效的 json 数据时,Flask request.get_json() 返回 None [重复]
Posted
技术标签:
【中文标题】当通过发布请求发送有效的 json 数据时,Flask request.get_json() 返回 None [重复]【英文标题】:Flask request.get_json() returning None when valid json data sent via post request [duplicate] 【发布时间】:2018-08-07 04:52:04 【问题描述】:使用烧瓶构建应用程序。该应用程序使用表结构来显示数据。它的部分功能是从用户指定的表行中收集数据。为此,我在执行一些 js 的每一行上放置了一个按钮。 js 从行中收集信息,使用 JSON.stringify() 转换为 json 对象并将发布请求发送到相关的烧瓶 url。
将 jsonified 对象的值从 js 文件记录到浏览器控制台表明它的格式正确。发布请求联系了正确的路由,但是 request.get_json() 函数在该路由的方法中返回 None 值。
我已经在烧瓶中设置了一条单独的路线进行测试。这是相关代码
来自 javascript
function do_some_work(e)
var row_data = get_table_row_data(e);
row_data = JSON.stringify(row_data);
console.log(row_data);
$.post("test", row_data);
get_table_row_data() 只返回一个带有键值对的对象。日志显示数据的 json 格式正确。
这里是python代码
#TODO
@application.route('/test', methods=['GET', 'POST'])
def test():
data = request.get_json()
print("data is "+format(data))
return redirect(url_for('index'))
这里的数据显示为无
非常感谢任何帮助
【问题讨论】:
如果我理解正确,引用的帖子“如何在 Flask 中获取 POSTed json?”要求用户使用 get_json(),这是作者正在做的事情,结果却没有用。对我来说,这似乎不是一个重复的问题。 【参考方案1】:request.json
它将返回 JSON 数据的字典。要获取值,请使用 request.json.get('value_name')
。所以你的路线会是这样的
#TODO
@application.route('/test', methods=['GET', 'POST'])
def test():
data = request.json
print("data is " + format(data))
return redirect(url_for('index'))
【讨论】:
已解决。它总是会像那样愚蠢。非常感谢 没问题,很高兴它解决了您的问题 呃,我的错。问题仍然存在并且相同 data = request.get_json(force=True) @PhilipButler 详细说明一下:'强制 - 如果设置为 True,则 mimetype 将被忽略',因此您进行的调用不包括 MIME 类型或错误的类型。您可以在请求中设置正确的 MIME 类型 ('application/json') 或将 'force' 设置为 'True',但是您需要确保它确实是您收到的 JSON。以上是关于当通过发布请求发送有效的 json 数据时,Flask request.get_json() 返回 None [重复]的主要内容,如果未能解决你的问题,请参考以下文章
向 FCM API 发送请求时收到无效的 JSON 有效负载
邮递员原始数据有效,但表单数据不适用于节点中的 POST 请求
如何通过 HttpClient 在 POST 请求中将 JSON 数据作为正文发送
如何通过 Postman 以 JSON 格式在请求正文中发送对象数组?