Flask的jsonify函数与烧瓶棉花糖不一致

时间:2018-11-12 20:04:35

标签: python flask flask-restful marshmallow

我正在使用flask-RESTful开发API,并且Flask的jsonify函数存在问题。我正在使用flask-marshmallow进行JSON序列化。下面是一个非常简化的代码段:

result = activities_schema.dump(activities)
return jsonify(result)

在本地,端点将返回具有键“ data”和“ errors”的json;但是,在Linux服务器上运行时,它返回的结果包含一个列表和一个dict,而没有'data'和'errors'键。

我已经确定这种不一致是由Flask的jsonify函数引起的,方法是在API返回结果之前先打印出结果。在本地和服务器上,“结果”均等于:

MarshalResult(data=[], errors={})

但是,当我在使用Flask的jsonify后打印响应时,会在本地获取该信息:

('{\n  "data": [], \n  "errors": {}\n}', '\n')

这是在服务器上打印的:

('[\n  [], \n  {}\n]', '\n')

有人知道为什么这些不匹配吗?

1 个答案:

答案 0 :(得分:0)

我研究了更多内容,发现了一个 解决问题的方法(由于该解决方案在文档中是正确的,所以我觉得有点傻),但无法解释为什么会出现原始问题。

解决方法(找到here)是使用以下一种方法:

undefined

或:

jsonify(result.data)

这两种方法仅返回数据,而不返回错误。

我仍然无法解释为什么服务器和我的本地计算机之间以另一种方式不一致,但这也许是另一个问题。