2

我是 Python 新手,正在探索 Flask 框架。

我正在使用 Flask Restful 开发一个简单的基于 Rest 的 API。现在,我发现最大的挑战是将 SQL Alchemy 模型类用于 JSON。今天我遇到了似乎提供这个的 Flask-Restless。那我应该怎么选。我设法通过在我的模型类中使用 to_dict 函数来转换 Flask Restful 以提供 JSON 输出,如下所示

class JSONSERIALIZER(object):
    def to_dict(self):
        return {c.name: getattr(self, c.name) for c in self.__table__.columns}

亲切的问候

4

2 回答 2

7

Restful 与 db 无关,因此您可以将它与流行的 NoSql 数据库一起使用,而 Restless 仅适用于 Sql 数据库(因为它依赖于 sqlalchemy)。但是,如果您最终使用 Sql 数据库并且对 sqlalchemy 没问题,那么 Restless 将为您提供更多开箱即用的功能。

fwiw,我个人最喜欢的是 Restless+Postgres。

编辑:为了展示你需要做多少事情来构建一个不安的 api,我刚刚制作了https://github.com/findjashua/flask-restless-example/blob/master/server.py

于 2014-04-02T20:41:20.613 回答
1

Flask-restless肯定有更多开箱即用的功能,并在 Web 服务抽象级别实现 SQLAlchemy 的查询 API,允许通过 GET 请求进行复杂查询。例如:

http://localhost:5000/api/book?q={"filters":[{"name":"is_available","op":"==","val":true},{"name": "author_id","op":"==","val":1}]}

相当于:

session.query(Book).filter(Book.author_id==1, Book.is_available == True).all()

此外,Flask-restless有一个 Beta 版本,旨在符合JSONAPI v1.0,它可能被证明非常强大。

我写了一篇关于如何使用 SQLAlchemy 和 Flask-Restless 引导 Flask API的快速教程。它也比上面的例子更深入,解释了 Flask-restless 如何优雅地处理相关对象。你可以在这里找到它:

http://thelaziestprogrammer.com/sharrington/web-development/sqlalchemy-defined-rest-api

于 2016-08-20T21:14:00.150 回答