Flask-RESTful返回结果不需要使用json.dumps()函数

3
我将尝试将我的REST服务器从Flask转换为Flask-RESTful。
我感到困惑的是,我正在使用retrofit在客户端读取数据,但在第一次实例中,我需要使用json.dumps(data),而在第二次实例中只需要返回数据。
有人能解释一下吗?在这两段代码中,data都是一个列表。
第一个示例仅使用了Flask。
data = []
for row in cur.fetchall():
    out = {
        "list_id": row[0],
        "list_name": row[1]
    }
    data.append(out)
cur.close()
return json.dumps(data)

第二个例子 Flask-RESTful

class UserLists(Resource):
def get(self, user_id):
    results = Lists.query.filter(Lists.user_id == user_id).all()
    data = [{'list_id': list_item.id, 'list_name': list_item.name} for list_item in results]
    return data
1个回答

7
Flask-RESTful会为您处理响应的编码。它不仅限于返回JSON,它将根据客户端请求的格式(通过Accept请求头设置)编码为支持的格式。
请参阅内容协商章节以了解如何添加除默认JSON输出之外的格式支持。
因此,对于Flask-RESTful响应,您需要返回一个Python结构,而不是JSON编码数据,因为这将排除如果您想要在未来支持XML或CSV响应的情况下生成这些响应的可能性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接