Flask-RESTful return不需要json.dumps()

Flask-RESTful return does not need to be json.dumps()

我正在尝试将我的 REST 服务器从 Flask 切换到 Flask-RESTful。

让我感到困惑的是,我正在使用改装来读取客户端上的数据,但是在第一个实例中我需要使用 json.dumps(data) 而第二个我只需要 return.

谁能解释一下?在两位代码数据中都是一个列表

第一个例子只是 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

Flask-RESTful 负责为您编码响应。它不仅限于 returning JSON,它会根据客户端请求的格式编码为支持的格式(通过 Accept 请求 header 设置)。

请参阅 Content Negotiation chapter 以了解如何添加默认 JSON 输出以外的格式支持。

因此,对于 Flask-RESTful 响应,您需要 return 一个 Python 结构,而不是 JSON-encoded 数据,因为这会妨碍生成,比如说,XML 或 CSV 响应,如果您想在将来支持此类格式。